gpt4 book ai didi

javascript - 未捕获语法错误 : Unexpected token < in JSON at position 2 at JSON. 在对象处解析 ()。 (userhistory.js:23)

转载 作者:行者123 更新时间:2023-12-01 03:35:51 26 4
gpt4 key购买 nike

所以我对我正在处理的这段代码有疑问。我一直在使用在下面的链接中找到的聊天功能。当我将它集成到我的应用程序中使用时,它工作得很好,尽管我在修改它时遇到了麻烦。然而,为了为我的网站创建用户历史记录功能,我开始使用相同的基本系统但使用不同的变量重新创建此功能。但是我似乎无法理解为什么会出现此错误。

Uncaught SyntaxError: Unexpected token < in JSON at position 2
at JSON.parse (<anonymous>)
at Object.<anonymous> (userhistory.js:21)
at i (jquery-2.2.3.min.js:2)
at Object.fireWith [as resolveWith] (jquery-2.2.3.min.js:2)
at z (jquery-2.2.3.min.js:4)
at XMLHttpRequest.<anonymous> (jquery-2.2.3.min.js:4)

这很奇怪,因为原始版本和我的版本几乎相同,但有一些差异,但是我的版本给了我这个语法错误。我在这里读过一些类似的帖子,但除了说以不同的方式做之外,没有人真正回答了我的问题。但由于相同的语法已经适用于略有不同的变量,因此我倾向于找出为什么我的语法不起作用。任何帮助,将不胜感激。我发布了下面工作版本的代码,并且发布了我用来测试的简单 html 文档。我已经一个字符一个字符地检查了我的字符,以确保我没有错过任何东西,在我单击此处的帖子之前,我加倍努力,只是为了防止最终的菜鸟失败。预先感谢各位。

https://www.phpclasses.org/blog/package/3213/post/1-Tutorial-on-Creating-an-AJAX-based-Chat-system-in-PHP.html

用户历史记录.js

var userID = 0;

$(document).ready(function() {
$('#btnSend').click(function(){
updateHistory();
$('#input').val("");
});
startHistory();
});

function startHistory(){
setInterval(function(){ getHistory(); }, 2000);
}

function getHistory(){
$.ajax({
type: "GET",
url: "/refreshhistory.php?userID="+userID
}).done(function( data )
{
var jsonData = JSON.parse(data); <-- This is where the debugger shows an error
var jsonLength = jsonData.results.length;
var html = "";
for (var i = 0; i < jsonLength; i++) {
var result = jsonData.results[i];
html += '<div id="tb-testimonial" class="testimonial testimonial-primary-filled">'+'<div class="testimonial-section">(' + result.actionDate+ ') <b>' + result.userID +'</b>: '+result.action+ '</div>'+'</div>'+'<div class="input-group">'+'<hr/>'+'</div>';
userID = result.userID;
}
$('#view_history').append(html);
});
}

function updateHistory(){
var input = $('#input').val();
if(input != ""){
$.ajax({
type: "GET",
url: "/newhistory.php?action="+encodeURIComponent( input )
});
}
}

messages.js

var lastTimeID = 0;

$(document).ready(function() {
$('#btnSend').click(function(){
sendChatText();
$('#chatInput').val("");
});
startChat();
});

function startChat(){
setInterval(function(){ getChatText(); }, 2000);
}

function getChatText(){
$.ajax({
type: "GET",
url: "/refresh.php?lastTimeID="+lastTimeID
}).done(function( data )
{
var jsonData = JSON.parse(data);
var jsonLength = jsonData.results.length;
var html = "";
for (var i = 0; i < jsonLength; i++) {
var result = jsonData.results[i];
html += '<div id="tb-testimonial" class="testimonial testimonial-primary-filled">'+'<div class="testimonial-section">(' + result.chattime+ ') <b>' + result.usrname +'</b>: '+result.chattext+ '</div>'+'</div>'+'<div class="input-group">'+'<hr/>'+'</div>';
lastTimeID = result.id;
}
$('#view_ajax').append(html);
});
}

function sendChatText(){
var chatInput = $('#chatInput').val();
if(chatInput != ""){
$.ajax({
type: "GET",
url: "/submit.php?chattext=" + encodeURIComponent( chatInput )
});
}
}

HTML

<!DOCTYPE html>
<html>
<head>
</head>
<body>

<h2>JavaScript Alert</h2>

<div class="col-sm-6" id="view_history">
</div>
<div class="input-group">
<div class="btn btn-secondary" id="ajaxForm">
<input type="text" class="input-large search-query" id="input" /><input type="button" class="btn btn-primary btn-sm" value="Send" id="btnSend" />
</div>
</div>
<script type="text/javascript" src="../assets/plugins/jQuery/jquery-2.2.3.min.js"></script>
<script type="text/javascript" src="userhistory.js"></script>
</body>
</html>

刷新历史记录.php

<?php
session_start();
require_once("/dbconnect.php");
require_once("/userhistoryclass.php");
$userID = intval($_GET['userID'] );
$jsonData = userHistoryClass::getuserHistory($userID);
print $jsonData;
?>

按照要求,我直接进入refreshhistory.php?userID=my_ID并得到结果

{"results":[{"accountID":"ba7c7ed76e0270fdf1a0a616d3c02849","action":"dasdfadsfasdfasdf","actionDate":"02:34:22"},{"accountID":"ba7c7ed76e0270fdf1a0a616d3c02849","action":"DASDFDFDFD","actionDate":"03:15:02"}]}

这样就可以了,但是解析问题仍然存在。只是想更新一下。

所以我的问题是我没有调用 JS 文件中的正确位置,我假设 js 像 PHP 一样工作并且会识别它所在的文件夹,所以我没有对特定文件夹添加额外的引用。新手错误。感谢詹姆斯和杰夫帮助我弄清楚我还有很长的路要走:)

最佳答案

我已经遇到了同样的问题:

我这样做了:

 $.get('ping', function(response) {
console.log(typeof response);
var res = JSON.parse(response);
if (res.showButton) {
var temps = res.time; // 'matin' or 'soir'

...其余代码。

当我运行它时,我得到:

VM13008:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at Object.success (new:21)
at i (jquery.min.js:2)
at Object.fireWith [as resolveWith] (jquery.min.js:2)
at A (jquery.min.js:4)
at XMLHttpRequest.<anonymous> (jquery.min.js:4)

和你一样的错误。

我点击此处VM13040:1我看到:[object Object]

我认为问题可能是转换的问题(我不确定)。

要解决这个问题,只需这样做:

省略:

var jsonData = JSON.parse(data);

并根据您的情况直接使用response;data

就我而言,代码如下所示:

function pingServer() {
console.log('to ping');
$.get('ping', function(response) {
console.log(typeof response);
if (response.showButton) {
var temps = response.time; // 'matin' or 'soir'

...其余代码。

关于javascript - 未捕获语法错误 : Unexpected token < in JSON at position 2 at JSON. 在对象处解析 (<anonymous>)。<anonymous> (userhistory.js:23),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44295077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com