ajax调用返回JSON ParseError即使认为JSON看起来是正确的


jQuery .ajax Call Returns JSON ParseError Even Thought JSON Appears to be Correct?

尽管我的JSON在jsonlint.com上进行了验证,但我还是收到了ParseError。

这是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;
}

这又回到了我的.ajax调用的error:函数中设置的断点。参数Y设置为"parseerror",x.responseText=

["testing123"] 

到目前为止,我已经研究了好几个小时了。我看过许多相关的StackOverflow帖子,但没有一个能在这种情况下工作的解决方案。

如何从这个.ajax调用中获得成功响应?

提前非常感谢所有人提供任何信息。

您的代码没有明显的问题,当我在本地机器上尝试时,它运行良好。然而,你上面的评论是一个很大的线索:

我只是查看了Safari控制台中的z参数,发现:"undefined不是一个函数(评估'JSON.parse(a+")')"这怎么会发生?

如果某个地方的某些代码使用"JSON"作为全局变量名,从而隐藏内置窗口,则可能会发生这种情况。JSON对象。

检查php代码中的Notice或Warning,如果有,请删除它们,然后重试。跳吧,这对你有帮助。

JavaScript允许字符串使用单引号或双引号,但JSON仅允许使用双引号。看见http://www.json.org/

另请参阅jQuery.parseJSON单引号与双引号

只需使用

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,
    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。请检查。

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