jQuery之Ajax--全局Ajax事件處理器


1.這些方法用於注冊事件處理器,用來處理頁面上的任何 Ajax 請求,當某些事件觸發后,這些事件處理器被調用。如果jQuery.ajaxSteup()中的 global 屬性被設置為 true (這也是默認設置),那么,每個 Ajax 請求都會觸發全局事件。注意:全局事件絕對不會被跨域(cross-domain)腳本或 JSONP 請求觸發,和 global 屬性的設置毫無關系。

2.  .ajaxComplete()方法:每當一個Ajax請求完成,jQuery就會觸發ajaxComplete事件,在這個時間點所有處理函數會使用.ajaxComplete()方法注冊並執行。如果global屬性被設置為false,當完成Ajax請求后不會調用這個方法。

     無論哪一個Ajax請求被完成,所有ajaxComplete處理函數都將被執行。如果我們必須區分不同的請求,我們可以使參數傳遞給這個處理函數。 他是通過事件對象, XMLHttpRequest 對象和設置對象中使用的請求,做每一次ajaxComplete 處理器執行的。舉個例子,我們能限制我們的回調到只處理事件處理某一特定的URL:

$(document).ajaxComplete(function(event, xhr, settings) {
 if ( settings.url === "ajax/test.html" ) {
 $( ".log" ).text( "Triggered ajaxComplete handler. The result is " +
 xhr.responseHTML );
 }
});

     當Ajax請求完成后顯示一個信息:

$(document).ajaxComplete(function(event,request, settings) {
 $( "#msg" ).append( "<li>請求完成。</li>" );
 });         

3.  .ajaxError()方法:每當一個Ajax請求出錯時,jQuery就會觸發ajaxError事件,在這個時間點所有處理函數會使用.ajaxError()方法注冊並執行。注意:這里的handler處理器調用跨域的腳本和跨域的JSONP請求。如果global屬性被設置為false,當完成Ajax請求失敗后不會調用這個方法。

     無論哪一個Ajax請求被完成,所有ajaxError處理器都將被執行。如果我們必須區分不同的請求,我們可以使參數傳遞給這個處理器。 他是通過事件對象、 XMLHttpRequest 對象和設置對象中使用的請求,每次ajaxError 處理器執行,它傳遞事件對象,jqXHR對象(在 jQuery 1.5之前是XHR對象),和用來創建請求的設置(settings)對象。如果請求失敗,因為JavaScript拋出一個異常,並且作為第四個參數的異常對象被傳遞給處理函數。舉個例子,我們能限制我們的回調到只處理事件處理某一特定的URL:

$( document ).ajaxError(function(event, jqxhr, settings, exception) {
  if ( settings.url == "ajax/missing.html" ) {
    $( "div.log" ).text( "Triggered ajaxError handler." );
  }
});

     當Ajax請求失敗后顯示一個信息:

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

4.  .ajaxSend()方法:每當一個Ajax請求即將發送,jQuery就會觸發ajaxSend事件,在這個時間點所有處理函數都會使用.ajaxSend()方法注冊並執行。如果global選項設置為false,調用$.ajax()$.ajaxStep()方法將不會被觸發。

     無論哪一個Ajax請求被發送,所有ajaxSend處理器都將被執行。如果我們必須區分不同的請求,我們可以使參數傳遞給這個處理器。 每次ajaxSend 處理器執行,它傳遞事件對象,jqXHR對象(在 jQuery 1.4中是XMLHttpRequest對象),和用來創建請求的設置(settings object)對象。如果請求失敗,因為JavaScript拋出一個異常,並且作為第四個參數的異常對象被傳遞給處理程序。舉個例子,我們能限制我們的回調到只處理事件處理某一特定的URL:

$(document).ajaxSend(function(event, jqxhr, settings) {
  if ( settings.url == "ajax/test.html" ) {
    $( ".log" ).text( "Triggered ajaxSend handler." );
  }
});

     當Ajax請求即將發送前顯示一個信息:

$(document).ajaxSend(function(event, request, settings) {
    $( "#msg" ).append( "<li>Starting request at " + settings.url + "</li>" );
});

5.  .ajaxStart()方法:每當一個Ajax請求即將發送,jQuery檢查是否有任何其他響應過程中的Ajax請求(注:未完成的請求)。如果沒有檢查到,jQuery就會觸發ajaxStart事件,在這個時間點所有處理函數都會使用.ajaxStart()方法注冊並執行。如果global選項設置為false,調用$.ajax()$.ajaxStep()方法將不會被觸發。

     當Ajax請求開始發送時顯示一個信息 (沒有一個Ajax請求是已經激活的):

$(document).ajaxStart(function() {
   $( "#loading" ).show();
 });

6.  .ajaxStop()方法:每當一個Ajax請求完成,jQuery檢查是否有任何其他響應過程中的Ajax請求(注:未完成的請求)。如果都執行完成,jQuery就會觸發ajaxStop事件,在這個時間點所有處理函數都會使用.ajaxStop()方法注冊並執行。如果一個未處理完成的Ajax請求用beforeSend回調函數返回false取消,ajaxStop事件也被觸發。如果global選項設置為false,調用$.ajax()$.ajaxStep()方法將不會被觸發。

     在Ajax請求停止后隱藏加載信息:

$(document).ajaxStop(function() {
      $( "#loading" ).hide();
});

7.  .ajaxSuccess()方法:每當一個Ajax請求成功完成,jQuery就會觸發ajaxSuccess事件,在這個時間點所有處理函數都會使用.ajaxSuccess()方法注冊並執行。如果global選項設置為false,調用$.ajax()$.ajaxStep()方法將不會被觸發。

     無論哪一個Ajax請求被完成,所有ajaxSuccess處理器都將被執行。如果我們必須區分不同的請求,我們可以使參數傳遞給這個處理器。 他是通過事件對象、 XMLHttpRequest 對象和設置對象中使用的請求,做每一次ajaxSuccess 處理器執行的。 舉個例子,我們能限制我們的回調到只處理事件處理某一特定的URL:

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

     當Ajax請求成功完成時,顯示一個信息:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM