ajaxError 事件


.on( "ajaxError", handler )傳回: jQuery

說明: 註冊一個處理常式,在 Ajax 要求傳回錯誤時呼叫。這是一個 Ajax 事件

此頁面說明 ajaxError 事件。如要了解已棄用的 .ajaxError() 方法,請參閱 .ajaxError()

每當 Ajax 要求以錯誤完成時,jQuery 會觸發 ajaxError 事件。此時會執行任何和所有已註冊的 ajaxError 處理常式。注意:此處理常式不會呼叫跨網域腳本和跨網域 JSONP 要求。

如要觀察此方法的動作,請設定基本的 Ajax 載入要求。

1
2
3
<button class="trigger">Trigger</button>
<div class="result"></div>
<div class="log"></div>

將事件處理常式附加到文件

1
2
3
$( document ).on( "ajaxError", function() {
$( ".log" ).text( "Triggered ajaxError handler." );
} );

現在,使用任何 jQuery 方法提出 Ajax 要求

1
2
3
$( "button.trigger" ).on( "click", function() {
$( "div.result" ).load( "ajax/missing.html" );
} );

當使用者按一下按鈕且 Ajax 要求失敗時,因為要求的檔案遺失,所以會顯示記錄訊息。

所有 ajaxError 處理常式都會被呼叫,無論完成哪個 Ajax 要求。如要區分要求,請使用傳遞給處理常式的參數。每次執行 ajaxError 處理常式時,會傳遞事件物件、jqXHR 物件(在 jQuery 1.5 之前,為 XHR 物件),以及用於建立要求的設定物件。當發生 HTTP 錯誤時,第四個引數 (thrownError) 會收到 HTTP 狀態的文字部分,例如「找不到」或「內部伺服器錯誤」。例如,如要將錯誤回呼限制為只處理與特定 URL 相關的事件

1
2
3
4
5
$( document ).on( "ajaxError", function( event, jqxhr, settings, thrownError ) {
if ( settings.url == "ajax/missing.html" ) {
$( "div.log" ).text( "Triggered ajaxError handler." );
}
} );

其他注意事項

  • 從 jQuery 1.9 開始,所有 jQuery 全域 Ajax 事件 的處理常式,包括使用 .on( "ajaxError", ... ) 新增的處理常式,必須附加到 document
  • 如果 $.ajax()$.ajaxSetup() 被呼叫,且 global 選項設定為 false,則 ajaxError 事件不會觸發。

範例

在 Ajax 要求失敗時顯示訊息。

1
2
3
$( document ).on( "ajaxError", function( event, request, settings ) {
$( "#msg" ).append( "<li>Error requesting page " + settings.url + "</li>" );
} );