全局Ajax事件處理程序:.ajaxSuccess()

(PS:這篇文章是官網API文件的非專業翻譯+個人意見,並且重新排版過)

全局Ajax事件處理程序:.ajaxSuccess()

附加上一個函式,每當Ajax成功完成時,該處理程序會被呼叫。

語法:

.ajaxSuccess( handler(event, XMLHttpRequest, ajaxOptions) )  // version added: 1.0
  • handler(event, XMLHttpRequest, ajaxOptions)
    Type: Function()
    The function to be invoked.

當一個Ajax要求成功完成時,jQuery會觸發ajaxSuccess事件。此時,每個用.ajaxSuccess()註冊的處理程序都會被執行。

為了實際觀察這個方法,我們建立了一個基本的Ajax載入要求:

<div class="trigger">Trigger</div>
<div class="result"></div>
<div class="log"></div>

將下面的事件處理器附加到文件上:

$(document).ajaxSuccess(function() {
  $( ".log" ).text( "Triggered ajaxSuccess handler." );
});

現在,用jQuery方法來建立一個Ajax要求:

$( ".trigger" ).on( "click", function() {
  $( ".result" ).load( "ajax/test.html" );
});

當使用者按下具有trigger類別的元素,而且Ajax要求成功完成,log 訊息就會出現。

從jQuery1.8開始,.ajaxSuccess()方法應該只被附加到document上。

不論是哪種Ajax要求要被傳送,所有的ajaxSuccess處理程序都會被呼叫。假如你需要區分是那些要求(所引發的Ajax事件),可以利用傳遞給處理程序的參數來辨別。每一次當ajaxSuccess處理程序被執行時,會有三個參數傳遞給處理程序,分別是,事件物件,XMLHttpRequest 物件,以及在要求建立時會被使用的設定物件。

舉例來說,下面程式碼顯示如何限制回呼函式只對具有特定URL的事件進行處理。(下面的例子只對 ettings.url == "ajax/test.html" 的事件進行處理,PS: 處理程序的三個參數都是jQuery呼叫該程序時會自動給的)

$( document ).ajaxSuccess(function( event, xhr, settings ) {
  if ( settings.url == "ajax/test.html" ) {
    $( ".log" ).text( "Triggered ajaxSuccess handler. The ajax response was: " +
      xhr.responseText );
  }
});

注意:上例中,你可以用xhr.responseXML 或是 xhr.responseHTML來取得傳回的Ajax內容,xhr.responseXML是XML內容,而 xhr.responseHTML是HTML內容。

其他注意事項:

  • 假如$.ajax()或是$.ajaxSetup()在呼叫時設定global選項為false,那.ajaxSuccess()方法將不會被觸發。

範例:

當一個Ajax要求成功完成時,顯示一個訊息。

$( document ).ajaxSuccess(function( event, request, settings ) {
  $( "#msg" ).append( "<li>Successful Request!</li>" );
 
})
 
 

  按個讚!~支持本站!~

FB推薦載入中