jQuery - Ajax 事件



Ajax 請求會產生許多不同的事件,您可以訂閱這些事件。以下是事件的完整列表以及它們的廣播順序。

有兩種型別的事件:

本地事件

這些是在 Ajax 請求物件中可以訂閱的回撥函式。

$.ajax({
   beforeSend: function(){
      // Handle the beforeSend event
   },
   complete: function(){
     // Handle the complete event
   }
   // ......
});

全域性事件

這些事件會廣播到 DOM 中的所有元素,觸發任何可能正在偵聽的處理程式。您可以像這樣偵聽這些事件:

$("#loading").bind("ajaxSend", function(){
   $(this).show();
}).bind("ajaxComplete", function(){
   $(this).hide();
});

對於特定的 Ajax 請求,可以透過傳遞全域性選項來停用全域性事件,如下所示:

$.ajax({
   url: "test.html",
   global: false,
   // ...
});

事件

以下是 Ajax 事件的完整列表。ajaxStart 和 ajaxStop 事件是與所有 Ajax 請求相關的事件。

  • ajaxStart (全域性事件) 如果啟動了一個 Ajax 請求並且當前沒有其他 Ajax 請求正在執行,則會廣播此事件。

  • beforeSend (本地事件) 此事件在啟動 Ajax 請求之前觸發,允許您修改 XMLHttpRequest 物件(如有需要,可以設定附加標頭)。

  • ajaxSend (全域性事件) 此全域性事件也在請求執行之前觸發。

  • success (本地事件) 只有在請求成功時(伺服器沒有錯誤,資料沒有錯誤)才會呼叫此事件。

  • ajaxSuccess (全域性事件) 只有在請求成功時才會呼叫此事件。

  • error (本地事件) 只有在請求發生錯誤時才會呼叫此事件(請求中永遠不可能同時具有 error 和 success 回撥)。

  • ajaxError (全域性事件) 此全域性事件的行為與本地 error 事件相同。

  • complete (本地事件) 無論請求是否成功,都會呼叫此事件。即使對於同步請求,您也會始終收到 complete 回撥。

  • ajaxComplete (全域性事件) 此事件的行為與 complete 事件相同,並且每次 Ajax 請求完成時都會觸發。

  • ajaxStop (全域性事件) 如果沒有更多 Ajax 請求正在處理,則會觸發此全域性事件。

jquery-ajax.htm
廣告