.ajaxComplete()


.ajaxComplete( handler(event, XMLHttpRequest, ajaxOptions) )返回: jQuery

描述: 当Ajax请求完成后注册一个回调函数。这是一个 AjaxEvent

每当一个Ajax请求完成,jQuery就会触发ajaxComplete事件,在这个时间点所有处理函数会使用.ajaxComplete()方法注册并执行。

观察活动中的这种方法,建立一个基本的Ajax加载请求:

1
2
3
<div class="trigger">Trigger</div>
<div class="result"></div>
<div class="log"></div>

在document上绑定事件处理器:

1
2
3
$(document).ajaxComplete(function() {
$( ".log" ).text( "Triggered ajaxComplete handler." );
});

现在,我们可以使用任何的jQuery方法构建一个Ajax请求:

1
2
3
$( ".trigger" ).click(function() {
$( ".result" ).load( "ajax/test.html" );
});

当我们点击class为 trigger 的元素并且Ajax请求完成,这个信息就会显示。

注,这段在官网的原文中已经被删除: 因为.ajaxComplete() 是作为一个jQuery对象实例方法去执行的,回调函数中,我们可以用this关键字作为指定的元素。

无论哪一个Ajax请求被完成,所有ajaxComplete处理函数都将被执行。如果我们必须区分不同的请求,我们可以使参数传递给这个处理函数。 他是通过事件对象, XMLHttpRequest 对象和设置对象中使用的请求,做每一次ajaxComplete 处理器执行的。举个例子,我们能限制我们的回调到只处理事件处理某一特定的URL:

1
2
3
4
5
6
$( document ).ajaxComplete(function( event, xhr, settings ) {
if ( settings.url === "ajax/test.html" ) {
$( ".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请求完成后显示一个信息。

1
2
3
$(document).ajaxComplete(function(event, request, settings) {
$( "#msg" ).append( "<li>Request Complete.</li>" );
});