2013-07-02 23 views
1

我試圖建立在jQuery的強大如何瞭解jQuery.ajax()調用期間是否發生錯誤?

$.ajax() 

的電話,但我無法理解如何發現呼叫是否失敗。

我明白如何實現()完成失敗()回調,他們很好地工作,如果調用實際上返回任何東西。但在我看來,只有當呼叫本身沒有以404或502之類的HTTP錯誤結束時,纔會調用註冊功能。See this jsFiddle for an example of what I mean.

那麼,我應該使用哪種習語來捕捉可能的HTTP錯誤並採取相應措施?

回答

1

這可能對你有所幫助。在編輯你的小提琴的過程中。

$.ajax({ 
    statusCode: { 
     404: function() { 
      alert("page not found"); 
     } 
    } 
}); 

編輯:我調整你的.fail()功能共同處理多個響應狀態代碼(我認爲這應該成爲你要找的)。 FIDDLE

.fail(function (response) { 
    if ($.inArray(response.status, [404, 302, 502]) != -1) { 
     $('pre').append("My callback fired, "); 
    } else { 
     $('pre').append("oops, error? "); 
    } 
}) 
+0

無賴!什麼是我試圖..跨瀏覽器AJAX調用不支持..必須找到另一種方式來測試此.. – face

+0

檢查出這個小提琴 - http://jsfiddle.net/JLDVQ/ – face

+0

謝謝。對不起源於不同起源的麻煩,這個東西讓我陷入夢境。儘管我不明白爲什麼它在這裏出了問題,但我認爲要求JSONP是避免同一起源策略的方法!?而且,對於每個錯誤代碼都必須註冊一個回調函數,這有點令人失望。畢竟,有很多不同的錯誤代碼... – MRA

0

隨着@臉的答案,你可能想切換到$.getJSON。我測試了它,所有的回調都正常工作。我認爲這與JSONP有關。

+0

感謝您的建議,但不是$ .getJSON只是$ .ajax調用的別名?乍一看,我真的不明白使用$ .getJSON的好處。 – MRA

+1

它從源頭上看起來像,但如果你看看這個小丑:http://jsfiddle.net/R4aXg/5/,事情肯定會發生。 – kalley

相關問題