ajaxComplete()
当Ajax请求完成后注册一个回调函数。这是一个 AjaxEvent。
.ajaxComplete(handler)
- handler类型: Function(Event event, jqXHR jqXHR, PlainObject ajaxOptions)被调用的函数。
每当一个Ajax请求完成,jQuery就会触发ajaxComplete
事件,在这个时间点所有处理函数会使用.ajaxComplete()
方法注册并执行。
观察活动中的这种方法,建立一个基本的Ajax加载请求:
<div class="trigger">Trigger</div> <div class="result"></div> <div class="log"></div>
在document上绑定事件处理器:
$(document).ajaxComplete(function () { $( ".log" ).text( "Triggered ajaxComplete handler." ); });
现在,我们可以使用任何的jQuery方法构建一个Ajax请求:
$( ".trigger" ).click(function () { $( ".result" ).load( "ajax/test" ); });
当我们点击class为trigger
的元素并且Ajax请求完成,这个信息就会显示。
注,这段在官网的原文中已经被删除:因为.ajaxComplete()
是作为一个jQuery对象实例方法去执行的,回调函数中,我们可以用this
关键字作为指定的元素。
无论哪一个Ajax请求被完成,所有ajaxComplete
处理函数都将被执行。如果我们必须区分不同的请求,我们可以使参数传递给这个处理函数。他是通过事件对象,XMLHttpRequest
对象和设置对象中使用的请求,做每一次ajaxComplete
处理器执行的。举个例子,我们能限制我们的回调到只处理事件处理某一特定的URL:
$( document ).ajaxComplete(function ( event, xhr, settings ) {if ( settings.url === "ajax/test" ) { $( ".log" ).text( "Triggered ajaxComplete handler. The result is " + xhr.responseText ); } });
注意:您可以通过查看xhr.responseText
获取返回的AJAX内容。
其他注意事项:
- 在jQuery1.9中,jQuery全局AJAX事件的所有处理程序,包括哪些
.ajaxComplete()
添加的方法,必须附加到document
上。 - 如果
$.ajax()
或$.ajaxSetup()
调用时,global
选项设置为false
,.ajaxComplete()
将不会触发。
例子
当Ajax请求完成后显示一个信息。
$(document).ajaxComplete(function (event, request, settings) { $( "#msg" ).append( "<li>Request Complete.</li>" ); });