2011-09-04 72 views
0

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

JSON:

{ 
    first: 1, 
    second: 2 
} 
+3

第一可言,来电,如果你使用它,你为什么写自己的Ajax功能,看看到AJAX的jQuery的方法是什么? – SergeS

+0

什么是'info.js'? –

+2

,如果你提供你想在这个问题解析JSON字符串这将有助于;) – arnaud576875

回答

11

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

string:value 

因此,“第一”和“第二”应该是在一个JSON对象字符串。 您的JSON更改为下面的代码,它应该是正确的

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

感谢。我的标识符不包含在引号中,我得到了同样的错误。包装他们固定它。 – Netricity

+0

你也可以跳过JSON解析并分配它。 – doublejosh

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.js不包含有效的JSON字符串JSON.parse(e)总是会失败。要验证它是否包含有效的JSON字符串,您可以在其上验证它http://jsonlint.com

+0

感谢,http://jsonlint.com是救我 –

相关问题