2013-01-17 85 views
4

這是我的代碼簡要概述:jQuery.getJSON()錯誤()未在404錯誤執行

$.getJSON(json_url, function(data) { 
    // application logic 
}).error(function() { 
    console.log("error"); 
}); 

的問題是,當服務器返回404錯誤,它似乎沒有被處理,因爲沒有console.log()說錯誤,但與404 (Not Found)代碼顯示在控制檯中了一個GET請求失敗。

我使用jQuery 1.9.0。

有一些簡單的錯誤,我在做什麼?

+1

嘗試'.fail'而不是'.error' ...後者已被棄用(儘管這並不意味着它不會起作用)。 –

+0

這似乎也沒有工作。有沒有其他方法可以替代JSONP的getJSON?另外,jQuery文檔在getJSON頁面上說錯誤,爲什麼這會起作用,但不是文檔所說的工作? – ixchi

+0

你確定它是一個404而不是JSON語法錯誤,它會默默地失敗嗎? –

回答

3

由於JSONP請求的性質,錯誤回調不叫那些。

docs

當數據從遠程服務器(其僅可以使用scriptjsonp數據類型)中檢索,錯誤回調和全局事件將永遠不會被觸發。

+0

好的,謝謝。我以前從來沒有看過那張筆記。我只需使用'$ .ajax()'函數。 – ixchi

+0

'$ .getJSON'只是在內部調用'$ .ajax'。如果您只能通過JSONP訪問API,那麼無法讓jQuery調用錯誤回調。 –

+0

當JSONP鏈接404s時,我已經成功地讓'$ .ajax'運行我的錯誤處理程序。我用[這個答案](http://stackoverflow.com/a/5121811/1289450)弄明白了。 – ixchi