首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >等待数组中的ajax请求完成

等待数组中的ajax请求完成
EN

Stack Overflow用户
提问于 2013-08-27 19:45:14
回答 4查看 548关注 0票数 3

我试图迭代检查复选框的ID(包含一个URL)。对于每个复选框,它都生成一个AJAX-get,它对数据库执行特定的操作。这是有效的,但是并不是所有AJAX-get似乎都被执行了(重定向执行得太快了)。

正如建议的那样,我试图使用‘$.. As’,但是,这似乎不起作用。我得到了一个“缺失”的参数列表,这肯定是在我推动ajax-get的部分中生成的。

这是正确的方式还是我应该尝试另一种方法?

代码语言:javascript
运行
复制
$("#marksolved").click(function () {
    var ajaxrequests = [];

    // Loop through checkboxes.
    $('input:checked').each(function () {
        // Each id of a checkbox contains an URL.
        var markurl = $(this).attr('id');

        // Do the request.
        ajaxrequests.push($.ajax({
            method: 'GET',
            url: markurl,
            cache: false
        });
    });

    // Check if all requests have completed.
    $.when.apply($, ajaxrequests).then(function () {
        // All requests have completed. An ajax-redirect will eventually take place too fast...
        alert('All actions done!');

    });
});
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-27 19:51:10

我得到了一个“缺失”的参数列表,这肯定是在我推动ajax-get的部分中生成的。

代码语言:javascript
运行
复制
    ajaxrequests.push($.ajax({
        method: 'GET',
        url: markurl,
        cache: false
    });

应:

代码语言:javascript
运行
复制
    ajaxrequests.push($.ajax({
        method: 'GET',
        url: markurl,
        cache: false
    }));

它缺少了一个),就像错误说的那样。

附带注意:将所有请求合并成一个批处理请求可能会更有效,而不是每个复选框都有一个请求。

票数 2
EN

Stack Overflow用户

发布于 2013-08-27 19:53:41

您可以使用$.ajaxStop()在所有ajax请求结束时引发事件,或者在所有请求完成时使用$.ajaxComplete()

票数 1
EN

Stack Overflow用户

发布于 2013-08-27 19:50:14

尝试将ajax异步选项设置为false。

代码语言:javascript
运行
复制
$.ajax({
    method:'GET',
    url: markurl,
    cache:false,
    async: false
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18474133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档