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

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

2.  .ajaxComplete()方法:每當一個Ajax請求完成,jQuery就會觸發ajaxComplete事件,在這個時間點全部處理函數會使用.ajaxComplete()方法註冊並執行。若是global屬性被設置爲false,當完成Ajax請求後不會調用這個方法。jquery

     不管哪個Ajax請求被完成,全部ajaxComplete處理函數都將被執行。若是咱們必須區分不一樣的請求,咱們可使參數傳遞給這個處理函數。 他是經過事件對象, XMLHttpRequest 對象和設置對象中使用的請求,作每一次ajaxComplete 處理器執行的。舉個例子,咱們能限制咱們的回調到只處理事件處理某一特定的URL:ajax

$(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請求失敗後不會調用這個方法。app

     不管哪個Ajax請求被完成,全部ajaxError處理器都將被執行。若是咱們必須區分不一樣的請求,咱們可使參數傳遞給這個處理器。 他是經過事件對象、 XMLHttpRequest 對象和設置對象中使用的請求,每次ajaxError 處理器執行,它傳遞事件對象,jqXHR對象(在 jQuery 1.5以前是XHR對象),和用來建立請求的設置(settings)對象。若是請求失敗,由於JavaScript拋出一個異常,而且做爲第四個參數的異常對象被傳遞給處理函數。舉個例子,咱們能限制咱們的回調到只處理事件處理某一特定的URL:dom

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

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

$(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:url

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

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

$(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>" );
 });
相關文章
相關標籤/搜索