jQuery ajaxComplete,ajaxSuccess已弃用?

时间:2015-05-22 18:40:04

标签: jquery ajax

我曾经使用$(document).ajaxComplete(function() {});检查页面是否已完成所有ajax调用。

我读过jQuery 1.8+已弃用.ajaxComplete.ajaxSuccess。有没有其他选择,我可以检查页面是否已完成所有ajax调用?

2 个答案:

答案 0 :(得分:0)

尚未弃用,请查看ajaxComplete() http://api.jquery.com/ajaxcomplete/

的文档
  

从jQuery 1.8开始,.ajaxComplete()方法只应附加到文档中。

     

无论Ajax请求是什么完成,都会调用所有ajaxComplete处理程序。如果必须区分请求,请使用传递给处理程序的参数。每次执行ajaxComplete处理程序时,都会传递事件对象,XMLHttpRequest对象以及在创建请求时使用的设置对象。

最重要的是:

  

如果在全局选项设置为false的情况下调用$.ajax()$.ajaxSetup(),则.ajaxComplete()方法将不会触发。

答案 1 :(得分:0)

请注意,您的要求与.ajaxComplete()的功能略有不同。每当任何 AJAX调用完成时,.ajaxComplete()会被解雇,而不是所有调用完成时。

如果要在调用处理程序之前确保所有调用都已完成,则必须将所有AJAX请求存储到数组中,并确保使用$.when.apply($, array)完成所有调用,例如:

var ajaxCalls = [];

// Make ajax calls
var call1 = $.get(...);
ajaxCalls.push(call1);

// Rinse and repeat the above pattern

// Fire function when ALL AJAX calls are completed
$.when.apply($, ajaxCalls).then(function() {
    // When ALL ajax calls in the array are successful
}, function() {
    // When one or more of the ajax calls have failed
});