javascript - 在 jQuery 中有没有一种方法可以循环数组,以便在循环到下一个循环之前首先等待服务器的响应?

标签 javascript jquery ajax jquery-ui loops

让我解释一下我的情况,

我在字段集中有一个复选框列表,对于每个复选框,我想发送一个 jquery get 并等待服务器的响应,这可以是随机时间 10 秒到很长时间,一旦我得到结果显示结果并继续下一个循环。

        $(function() {
            $("button[name=distributeGroupProgramsToCustomersNow]").click(function() {
                event.preventDefault();
                $("button[name=distributeGroupProgramsToCustomersNow]").attr("disabled", "");
                $("input[name='distributeGroups-GroupsList']:checked").each(function ()
                {
                    // the loop that waits for the response 
                });
                $("button[name=distributeGroupProgramsToCustomersNow]").removeAttr("disabled", "");
            });
        });

我如何在 jQuery 中实现这一点?

非常感谢任何帮助,谢谢!

最佳答案

您可以通过同步调用 ajax 来实现,这样循环必须等待响应才能继续。

$.each(arrayOfItems, function(i,v){
  $.ajax({
    url: 'path/to/my/file.extension',
    type: 'GET', //this is already the default, only placed as an example.
    async: false, // this is what you want to make sure things 'wait'.
    data: 'checkedValue='+v, //value of our item.
    success: function(data){
      //manipulate / insert the data where you need.
      $("#someElement").append(data);       
    }
  });
});

工作原理

对于每个项目,我们都有一个 ajax 调用。禁用“异步”ajax 会强制服务器“等待”上一个 AJAX 请求完成,然后再处理下一个 AJAX 请求。这会复制您想要的行为。

关于javascript - 在 jQuery 中有没有一种方法可以循环数组,以便在循环到下一个循环之前首先等待服务器的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9776673/

相关文章:

jquery - .live()、.delegate() 或 .on() 都不适用于动态加载到页面的表单

javascript - Web 浏览器未在 Ajax 调用上设置 cookie

javascript - 为 AJAX 添加 onclick 函数

javascript - 如何为每个选取框设置不同的背景颜色?

javascript - 使用 Protractor 以 Angular 不同路线截取屏幕截图

javascript - 查找独特的项目集合

javascript - 如何在一个文本框中附加用于自动完成的多个 json 结果

javascript - 元素变为可见时的 jQuery

javascript getDay() 在美国返回错误的日期数字,但在印度返回正确的值

javascript - Nodejs 等待本地主机......并获取数据