我有很多嵌套的 ajax 请求,如下所示。我在下面的成功函数中发生了很多事情,我需要像成功这样的东西,它会在成功完成时触发。 complete(jqXHR, textStatus)
似乎只是随着 success
而触发,我不认为 .ajaxComplete()
有效。
$.ajax({
url: 'api/periods.json',
dataType: 'json',
success: function (d1) {
//more nested ajax requests
},
});
解决方案:
一个名为 $.fajax()
的 $.ajax()
替代插件(已完成 + ajax)已创建。请查看并告诉我您的想法。 https://github.com/reggi/fajax (它有很好的文档记录)。
最佳答案
您可以为 jQuery.ajax 创建一个包装函数,使其更简洁:
var started = 0, done = 0;
var globalHandler = function(){
//do stuff when all success handlers are done
}
function handleAjax(args){
var _success = args.success || function(){};
args.success = function(jqXHR, textStatus){
_success(jqXHR, textStatus);
done++;
if(done >= started)
globalHandler();
}
var ajax = $.ajax(args);
started++;
return ajax;
}
使用
handleAjax({
url: 'api/periods.json',
dataType: 'json',
success: function (d1) {
//more nested ajax requests like this:
handleAjax({...});
}
});
这会创建一个闭包,因此不要在那里做任何疯狂的内存密集型操作,你应该没问题。
关于javascript - 触发成功处理程序已完成执行,带有嵌套的ajax请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10344136/