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
广告