2012-06-07 17 views
15

捕獲404狀態我有這樣的代碼:使用jQuery AJAX

$.ajax({ cache: false, 
    url: "/Admin/Contents/GetData", 
    data: { accountID: AccountID }, 
    success: function (data) { 
     $('#CityID').html(data); 
    }, 
    error: function (ajaxContext) { 
     alert(ajaxContext.responseText) 
    } 
}); 

我仍然困惑的ajaxContext以及如何捕捉404個返回碼。不過,我還有一個問題。我正在閱讀關於編碼的一些成功和失敗,並且不再使用jQuery最新版本中的錯誤。

所以我應該改變我的代碼使用完成和失敗。那我怎麼能檢查一個404?

+0

這將如何工作使用.fail()? –

回答

24

更換您的誤差函數如下...

error:function (xhr, ajaxOptions, thrownError){ 
    if(xhr.status==404) { 
     alert(thrownError); 
    } 
} 
+0

我以前有錯誤:函數(jqXHR,textStatus,errorThrown)。是ajaxOptions正確。它應該是textStatus? – Alan2

+0

適合我,不明白爲什麼不,但願意以不同的方式告知。 – JayTee

+3

只是想說明,這不適用於跨域調用。它將靜默失敗,並且「完成」或「錯誤」回調參數都不會被執行。 – Meogi

3

404 erros將由掛鉤到error屬性的匿名函數處理。除了對URL的成功HTTP請求(即2xx)之外的任何內容都將觸發錯誤方法。下面將你的目的工作:

error : function(jqXHR, textStatus, errorThrown) { 
    if(jqXHR.status == 404 || errorThrown == 'Not Found') 
    { 
     console.log('There was a 404 error.'); 
    } 
} 

當他們指的是jQuery的文檔中取出successerror功能,他們指的是那些jqXHR類的$.ajax()沒有屬性。

+0

但JayTee的匿名函數的編碼是否正確?我以前的嘗試只是在paranthasis函數中放入一個變量ajaxContent。 – Alan2

+0

回調函數接受三個參數:jqXHR(在jQuery 1.4.x,XMLHttpRequest中)對象,一個描述發生的錯誤類型的字符串和一個可選的異常對象。發生HTTP錯誤時,errorThrown會收到HTTP狀態的文本部分,例如「未找到」或「內部服務器錯誤」。 – BenM

+0

我已編輯我的答案,包括正確的語法... – BenM