javascript - 触发成功处理程序已完成执行,带有嵌套的ajax请求

标签 javascript jquery ajax

我有很多嵌套的 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/

相关文章:

Php 将数组传递给 Javascript

javascript - 在新插入的元素上应用 javascript 库

jquery - 如何使用ajax get从网页中获取css文件并覆盖程序中的默认样式?

javascript - 获取要在 ajax 请求中传递的每个 tr 的值

javascript - 使用 Protractor 测试验证页面上的 beacon(https 请求)

javascript - 递归异步到 promise 或回调

javascript - GeoIP 重定向欧盟美国英国

javascript - 尽管具有不同的 id,但两个不同文件输入表单的图像预览出现在同一 div 中

javascript - 在数组中使用未选中和选中的框

javascript - Js数组检测: number of values from php array found (grabbed from database)