为什么这个JSON.parse返回错误:"意外令牌非法"?

0x4*_*2D2 0 javascript

我正在使用AJAX请求.这是我第一次使用JSON或其中任何一种方法.ajax实用程序将onreadystatechange回调的参数作为我正在请求的文件的responseText或responseXML返回.使用一个简单的info.txt,request.responseText并将工作正常,但当我尝试它,当我多次检查我的语法是正确的时info.js,JSON.parse它返回"意外的令牌ILLEGAL".这是JSON:

JSON:

{
    first: 1,
    second: 2
}
Run Code Online (Sandbox Code Playgroud)

Gua*_*xin 11

JSON.parse()语法非常严格.键/值对应具有以下形式:

string:value
Run Code Online (Sandbox Code Playgroud)

所以"first"和"second"应该是JSON对象中的字符串.将您的JSON更改为以下代码,它应该是正确的

{
    "first": 1,
    "second": 2
}
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 5

您似乎已经在成功回调中使用了jQuery.jQuery还有执行AJAX请求的方法,例如$.ajax渲染AJAX自定义函数非常无用.在您的情况下,您似乎在请求与JSON不同的javascript文件(.js).所以:

(function() {
    $.getScript('json.js', function(result) {
        // TODO: do something with the result
    });
})();
Run Code Online (Sandbox Code Playgroud)

或者如果它是JSON:

(function() {
    $.getJSON('json.js', function(result) {
        // TODO: do something with the result
    });
})();
Run Code Online (Sandbox Code Playgroud)

这就是说你仍然可以继续使用你的方法,但JSON.parse(e)如果你json.js不包含有效的JSON字符串,它将永远失败.要验证它是否包含有效的JSON字符串,您可以在http://jsonlint.com上对其进行验证