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

时间:2011-09-04 13:55:18

标签: javascript

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

JSON:

{
    first: 1,
    second: 2
}

2 个答案:

答案 0 :(得分:11)

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

string:value

因此“first”和“second”应该是JSON对象中的字符串。 将您的JSON更改为以下代码,它应该是正确的

{
    "first": 1,
    "second": 2
}

答案 1 :(得分:5)

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

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

或者如果它是JSON:

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

据说你仍然可以继续使用你的方法,但如果JSON.parse(e)不包含有效的JSON字符串,json.js将始终失败。要验证它是否包含有效的JSON字符串,您可以在http://jsonlint.com

上对其进行验证