在每个循环中调用Jquery ajax

Daz*_*Kid 12 each jquery

我在使用jquery .each()和.ajax()函数时遇到了问题.我使用.每()遍历5种元素和正在执行阿贾克斯()调用的每一个.我的问题是,我只希望在从每个ajax请求收到响应时继续循环.目前,所有5个元素都在循环,5个ajax请求正在进行,然后返回5个响应.

她是一个简单的例子:

$(".element").each(function() {
    var id= $(this).find(('txtId').val();
    $.ajax({
       type: "POST",
       url: "/Handlers/Handler.ashx",
       data: "ID=" + id,
       success: function(xml){

         // I would like the each() loop to pause until this is hit, 
         // and some additional logic can be performed. 

       }
     });

});
Run Code Online (Sandbox Code Playgroud)

干杯.

Pek*_*ica 10

您可以使用此async选项使每个请求同步(=在每个请求完成之前暂停脚本执行):

async 默认情况下,所有请求都是异步发送的(默认情况下设置为true).如果需要同步请求,请将此选项设置为false.跨域请求和dataType:"jsonp"请求不支持同步操作.请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作.

但是,正如文档已经说过的那样,这是非常气馁的,因为如果请求挂起或超时,它可能会冻结浏览器.

如果可能的话,最好以一种可以使用经典回调函数的方式更改代码的体系结构.

  • 干杯求助,我已经完成了你的建议并改变了我的代码结构,我已经删除了循环并改为使用递归.现在工作正常. (4认同)