2010-08-06 113 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