2014-11-05 104 views
-3

我調用AjaxJSON解析錯誤:預期 '}'

$.ajax({ 
    url: 'url', 
    data: {}, 
    method: 'POST', 
    enctype: 'multipart/form-data', 
    dataType: 'json', 
    success: function(data){ 
     // handle success 
    }, 
    error: function(data, textStatus){ 
     //handle error 
    } 
}); 

這裏我JSON響應是

{ 
    person: { 
     name: 'John' 
    } 

正如你所看到的,JSON響應的格式不正確。因此,我得到的錯誤

json parse error: Expected '}' 

error: function(data, textStatus){ 

} 

怎麼樣,我可以忽略此語法錯誤,並繼續執行我的,因爲我已經收到了響應。

回答

6

您不能忽略解析器錯誤。由於解析器錯誤,沒有數據被解析。修復你的數據。

如果無法修復數據服務器端,請獲取更好的數據源。如果你不能這樣做,你必須解決它的客戶端,連接}那裏,然後手動解析(禁用jQuery解析),並希望你的整個系統不會崩潰當有人修復他們的錯誤後(這是不可避免的)。

從@squint

Don't request JSON or send JSON response headers and jQuery won't parse it.

這意味着你要請求JSON與dataType: 'json'。改爲使用text。 jQuery文檔中的更多信息:http://api.jquery.com/jquery.ajax/

+0

這不是他要問的。當JSON無效時,他首先詢問如何獲取數據。 – 2014-11-05 01:24:14

+0

我離開回答那些誰想要代表。 – 2014-11-05 01:25:16

+1

@squint ??當你的輸入是有價值的,你應該添加答案,在這種情況下,它肯定是有價值的。誰關心聲譽? – Brad 2014-11-05 01:25:40

1

從某種意義上說,您可以將jQuery ajax調用中的成功/錯誤方法視爲信使 - 信使。

如果調用成功方法,服務器會爲您提供良好的數據,您將在隨後的函數中處理這些數據。如果錯誤方法被調用,服務器給你提供了不好的數據。您仍然可以在錯誤方法中處理數據,但問題是數據不正確(如果您願意的話,將其視爲不可靠)。如果數據不可靠,那麼嘗試通過進行調整來修改代碼中的錯誤數據是不好的編程技術。

作爲一名程序員,您希望始終追求良好的數據 - 因此這裏的重點是從遠程服務器獲取良好數據,以便調用成功方法,而不是錯誤。這有意義嗎?