Ajax JSON解析错误

时间:2010-08-06 22:48:01

标签: json

我发现这有点奇怪。它适用于旧版本的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']}]})

1 个答案:

答案 0 :(得分:3)

Jquery 1.4更新了他们的JSON解析器,因此它不再接受它之前所做的无效JSON。您的服务器正在输出以前容忍的无效JSON,但不再是。 release notesdocumentation中(简要地)提到了此更改,如果您使用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变通方法,但这不是最佳的。