Javascript ajax调用返回JSON语法错误,即使JSON看起来是正确的?
即使我的JSON在jsonlint.com上进行了验证,我还是收到了一个解析错误 以下是jQuery代码:Javascript ajax调用返回JSON语法错误,即使JSON看起来是正确的?,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,即使我的JSON在jsonlint.com上进行了验证,我还是收到了一个解析错误 以下是jQuery代码: $.ajax({ url: path, type: 'GET', data: {}, cache: false, dataType: 'json', contentType: 'application/json; charset=utf-8', success: function (data) {
$.ajax({
url: path,
type: 'GET',
data: {},
cache: false,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
var a = 'breakpoint here doesn't activate';
},
error: function (x, y, z) {
var b = 'code execution stops at a breakpoint here.';
}
});
下面是正在调用的PHP代码:
function getAllAnswersToHitViaAjax($theJobName) {
$testData[0] = 'testing123';
$encodedData = json_encode($testData);
echo $encodedData;
return;
}
这返回到my.ajax调用的error:function中设置的断点。参数Y设置为“parseerror”,x.responseText=
["testing123"]
到目前为止,我已经调查了好几个小时了。我看过许多相关的StackOverflow帖子,但是没有一个解决方案可以在这种情况下工作
如何从这个.ajax调用中获得成功响应
非常感谢大家提供任何信息。请使用
$.ajax({
url: path,
type: 'GET',
cache: false,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
var a = 'breakpoint here doesn\'t activate';
},
error: function (x, y, z) {
var b = 'code execution stops at a breakpoint here.';
}
});
并在PHP代码中粘贴此代码
function getAllAnswersToHitViaAjax($theJobName) {
$testData[0] = 'testing123';
$encodedData = $testData;
echo json_encode($encodedData);
exit;
}
可能是在深入挖掘代码之后,我假设在PHP代码中没有正确地传递数据。请使用exit或die方法将数据传递回ajax。请检查。检查php代码中的通知或警告,如果有,请删除该通知或警告,然后重试。这对你有帮助 JavaScript允许字符串使用单引号或双引号,但JSON只允许使用双引号。看 另请参见仅使用
function getAllAnswersToHitViaAjax($theJobName) {
$testData[0] = 'testing123';
echo json_encode($testData);
}
然后在AJAX中,您可以执行以下操作
$.ajax({
url: path,
type: 'GET',
dataType: 'json'
success: function(data){
for (var i = 0; i < data.length; i++) {
//DO YOUR STUFF
}
}
});
$.ajax({
url:path,
键入:“GET”,
数据类型:“json”
成功:功能(数据){
对于(变量i=0;i
您的代码没有明显的错误,当我在本地机器上试用时,它工作正常。然而,你上面的评论是一条重要线索:
我只是查看了Safari控制台中的z参数,发现了这样一个问题:“undefined不是一个函数(评估'JSON.parse(a+)”)”,怎么会发生这种情况
如果某个地方的代码使用“JSON”作为全局变量名,隐藏内置的window.JSON对象,则可能会发生这种情况。
var a='breakpoint here not activate'代码>应该是var a='breakpointhere'notactivate'代码>你在Mozilla的控制台中找到“parseerror”了吗?@Shaunuk,说得好。我对vara='breakpointherenotactivate'有相同的结果
@minspace,我正在使用Safari控制台,在那里我看到了“parserror”。检查..响应头应该有“application/json”。使用您提供的代码,我仍然有错误。ajax请求中的数据如何?您是否正在向服务器发送正确的数据?对于此测试,我已尝试将所有内容减少到最低限度。据我所知,我没有向服务器发送数据<代码>数据:{}
如果有其他内容需要检查,请告诉我。请查看我的更新代码,在不检查完整代码的情况下,我找不到任何错误。如果可以,请共享完整的代码。以下是完整的代码-我必须使用两条注释来匹配它:function testAjax(){var path=“http://“+theHostname+”/welcome/getAllAnswersToHitViaAjax/tempjob”;$.ajax({url:path,键入:'GET',data:{},cache:false,dataType:'json',contentType:'application/json;charset=utf-8',
php代码或php错误日志文件中没有错误或警告。这是一个好主意。但实际上我需要返回一个非常大的数组。根据我在上面的评论中发现的,整个问题似乎是json.parse不可调用。“未定义”不是函数(计算'JSON.parse(a+“”)')
你解决了它!!!!!!!!!!!!!!!!!我上次使用这个项目时使用的是一个较旧版本的jQuery,我还包括了一个JSON.js库。非常感谢你!!!!!!!!!!!!!我希望我能把你的答案提高1500次左右!非常感谢所有帮助我找到它的人!
Try with the below code,
function getAllAnswersToHitViaAjax($theJobName) {
$testData[0] = 'testing123';
echo json_encode($testData);
die();
}
$.ajax({
url: path,
type: 'GET',
dataType: 'json'
success: function(data){
console.log(data);
var result = JSON.parse(data);
console.log(result);
}
});