Javascript ajax调用返回JSON语法错误,即使JSON看起来是正确的?

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) {

即使我的JSON在jsonlint.com上进行了验证,我还是收到了一个解析错误

以下是jQuery代码:

$.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);
    }
    });