什么是 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 请求正在处理,则会触发此全局事件。

更新于:2020年2月17日

277 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告