我发现这有点奇怪。它适用于旧版本的iQuery(即1.2.x到1.3)。但是,在使用jQuery 1.4.x
时,我得到了一个parserror任何帮助将不胜感激。谢谢。
这是我从XMLHttpRequest.responseText
获得的({count: 5, success: true, error: '', cache: false, data: [{column: ['Mike','Mike','Steve','Steve','Steve']}]})
答案 0 :(得分:3)
Jquery 1.4更新了他们的JSON解析器,因此它不再接受它之前所做的无效JSON。您的服务器正在输出以前容忍的无效JSON,但不再是。 release notes和documentation中(简要地)提到了此更改,如果您使用Google discussion <{3}},则会有很多about it "jquery 1.4 JSON" < / p>
但总结一下:JSON中的密钥有效,必须有引号,字符串不能被这些括号包围,没有什么可以使用单引号作为分隔符,所以你的JSON需要是:
{"count": 5, "success": true, "error": "", "cache": false, "data": [{"column": ["Mike","Mike","Steve","Steve","Steve"]}]}
或更可读:
{
"count": 5,
"success": true,
"error": "",
"cache": false,
"data": [
{
"column": [
"Mike",
"Mike",
"Steve",
"Steve",
"Steve"
]
}
]
}
在http://www.json.org/上用图片和图表清楚地说明了这些规格。您还可以在JSONLint检查您的JSON - 上面的JSON检查就好了,但您的原始JSON会引发各种错误。
关于你需要做什么:如果你有能力改变服务器发送的内容,那就做 - 输出有效的JSON。请。 仅如果您无法更改服务器的行为,则必须使用上面链接的其中一个帖子的解决方法,或使用其他一些JSON库。
一般原则:在所有情况下,最好使用Right Way™ - 修复服务器的输出(即使在外部服务器/ API上提交错误)是长期解决方案,但可能不会立即实用。因此,有时需要使用hackish变通方法,但这不是最佳的。