原文地址:http://api.jquery.com/Ajax_Events/
你可以处理 Ajax 请求产生的许多不同的事件。这里有一个 Ajax 事件的完整列表,并说明了事件的触发顺序。
下面是两个类型的事件:
Local Events(本地事件)
你可以在 Ajax 请求对象中通过回调函数处理这些事件。比如这样:
$.ajax({
beforeSend: function(){
// Handle the beforeSend event
},
complete: function(){
// Handle the complete event
}
// ......
});
Global Events(全局事件)
这些事件通过 document 对象触发,可以使用任意的处理函数监听它们。你可以像下面这样做:<pre name="code" class="javascript"> $(document).bind("ajaxSend", function(){
$("#loading").show();
}).bind("ajaxComplete", function(){
$("#loading").hide();
});
全局事件可以通过在 Ajax 请求中传递特定的全局选项被禁止,像下面演示的这样:
$.ajax({
url: "test.html",
global: false,
// ...
});
Events (事件)
这是 Ajax 全部事件的详细列表,并按照它们的触发顺序排列。每一个 Ajax 请求(除非一个全局选项被禁止)都会触发下面的事件列表。ajaxStart 和 ajaxStop 事件是关联到所有 Ajax 请求一起的事件。
- ajaxStart (Global Event)
无论在何时发送 Ajax 请求,jQuery 都会检查是否存在其他 Ajax 请求。如果不存在,则 jQuery 会触发该 ajaxStart 事件。
- beforeSend (Local Event)
这个事件在一个 Ajax 请求开始之前被触发,它允许你去修改 XMLHttpRequest 对象(如果你需要可以设置额外的头信息)。
- ajaxSend (Global Event)
这个全局事件也在 Ajax 请求开始之前被触发。
- success (Local Event)
这个事件仅在 Ajax 请求是成功的情况下被触发(服务器没有返回错误,数据也没有错误)。
- ajaxSuccess (Global Event)
这个事件也仅在 Ajax 请求是成功的情况下被触发。
- error (Local Event)
这个事件仅在 Ajax 请求发生错误的情况下被触发(你永远不能在同一个 Ajax 请求中同时监听到 error 和 success 的事件)。
- ajaxError (Global Event)
这个全局事件和本地的 error 事件有着相同的触发条件。
- complete (Local Event)
不管 Ajax 请求是否是成功的,这个事件都被触发。你总是会监听到一个 complete 的事件发生,甚至是同步的请求。
- ajaxComplete (Global Event)
这个全局事件和本地的 complete 事件有着相同的触发条件。每当一个 Ajax 请求完成时将被触发。
- ajaxStop (Global Event)
无论 Ajax 请求在何时完成 ,jQuery 都会检查是否存在其他 Ajax 请求。如果不存在,则 jQuery 会触发该 ajaxStop 事件。