全局Ajax事件處理程序:.ajaxError()
- 詳細內容
- 分類:JQuery
- 發佈:2013-08-13, 週二 22:07
- 點擊數:2318
(PS:這篇文章是從官網非專業翻譯+個人意見,並且重新排版過)
全局Ajax事件處理程序:.ajaxError()
註冊一個處理程序,當Ajax要求完成但是帶有錯誤時該處理程序會被呼叫。這是一個Ajax事件(AjaxEvent)。
語法一:
.ajaxError( handler(event, jqXHR, ajaxSettings, thrownError) ) // version added: 1.0
-
handler(event, jqXHR, ajaxSettings, thrownError)
Type: Function()
handler是個回呼函式,當事件發生時該函式會被調用。
當當Ajax要求完成但是帶有錯誤時,jQuery會觸發ajaxError事件。此時,每個用.ajaxError()註冊的處理程序都會被執行。注意:在誇網域腳本或是跨網域JSOP要求的情況下,該處理程序並不會被呼叫。
建立一個基本的Ajax載入要求來實際觀察這個方法:
<button class="trigger">Trigger</button> <div class="result"></div> <div class="log"></div>
將下面的事件處理器附加到文件上:
$( document ).ajaxError(function() { $( "div.log" ).text( "Triggered ajaxError handler." ); });
現在,用jQuery方法來建立一個Ajax要求:
$( "button.trigger" ).on( "click", function() { $( "div.result" ).load( "ajax/missing.html" ); });
當使用者按下按鈕,並且Ajax要求失敗(因為要求的檔案不存在),log訊息就會出現。
從jQuery1.8開始,.ajaxError()方法應該只被附加到document上。
當Ajax要求完成(並且帶有錯誤)時,所有的ajaxError處理程序都會被呼叫。假如你需要區分是那些要求(所引發的Ajax事件),可以利用傳遞給處理程序的參數來辨別。每一次當ajaxError處理程序被執行時,會有三個參數傳遞給處理程序,分別是,事件物件,jqXHR 物件(jQuery 1.5中的XHR物件),以及在要求建立時會被使用的設定物件。當一個HTTP錯誤發生時,會有第四個參數(thrownError),該參數會接收HTTP狀態的文字部分,像是"Not Found"或是"Internal Server Error."
舉例來說,下面程式碼顯示如何限制錯誤回呼函式只對具有特定URL的事件進行處理。(下面的例子只對 settings.url === "ajax/missing.html" 的事件進行處理,PS: 處理程序的三個參數都是jQuery呼叫該程序時會自動給的)
$( document ).ajaxError(function( event, jqxhr, settings, exception ) { if ( settings.url == "ajax/missing.html" ) { $( "div.log" ).text( "Triggered ajaxError handler." ); } });
其他注意事項:
- 假如$.ajax()或是$.ajaxSetup()在呼叫時設定global選項為false,那.ajaxError()方法將不會被觸發。
範例:
當Ajax要求失敗時,顯示一個訊息。
$( document ).ajaxError(function( event, request, settings ) { $( "#msg" ).append( "<li>Error requesting page " + settings.url + "</li>" ); });
按個讚!~支持本站!~