2010-08-06 110 views
2

我觉得这有点奇怪。它适用于旧版本的iQuery(即1.2.x到1.3)。不过,我使用jQuery 1.4.x时出现parserrorAjax JSON解析错误

任何帮助将不胜感激。谢谢。

这是我从XMLHttpRequest.responseText

({count: 5, success: true, error: '', cache: false, data: [{column: ['Mike','Mike','Steve','Steve','Steve']}]}) 

回答

3

jQuery的1.4更新了自己的JSON解析器得到的,因此它不再接受无效JSON,它以前那样。您的服务器正在输出先前可以容忍的无效JSON,但不再是。这种变化是在release notesdocumentation提到的(暂时的),而且也一直是discussionaboutit很多,如果你谷歌"jquery 1.4 JSON"

但总结:按键的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库。

一般原则:在所有情况下,正确的方法™是最好的 - 修复服务器的输出(即使这是在外部服务器/ API上提交错误)是长期的解决方案,但可能不会立即实际的。所以有时候需要解决方法,但不是最优的。

+0

非常感谢。它的工作就像一个魅力。 非常感谢! – Henry 2010-08-09 14:48:03