我曾经使用$(document).ajaxComplete(function() {});
检查页面是否已完成所有ajax调用。
我读过jQuery 1.8+已弃用.ajaxComplete
和.ajaxSuccess
。有没有其他选择,我可以检查页面是否已完成所有ajax调用?
答案 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
});