暂停jQuery ajax脚本,直到脚本成功返回

时间:2011-11-30 02:58:31

标签: jquery ajax

我在.each()函数末尾有以下代码,循环接近50次。

$.ajax({
    type: "POST",
    url: "/process.php",
    data:  "info="+info,
    success: function(html){
        // $('#container').html(html);          
    }
});

如何在每次迭代期间暂停脚本,以便在执行下一个.each()之前等待每个ajax发布成功?

我基本上是在阻止排队ajax请求。

3 个答案:

答案 0 :(得分:2)

您需要做的就是添加async:false属性。例如:

$.ajax({
    type: "POST",
    url: "/process.php",
    data:  "info="+info,
    async: false,
    success: function(html){
        // $('#container').html(html);          
    }
});

但是,您应该知道,这将基本上“冻结”页面,直到所有AJAX调用完成。提出这样的同步请求很少是必要的,所以除非你在某种内部使用这种用户体验不是很重要的情况下这样做,否则我强烈建议你尝试用一种异步方式来实现你好吗。

答案 1 :(得分:1)

不要使用显式循环。将每个next-ajax调用移动到前一个的success处理程序中。或queue the requests programmatically

var numRequests = 50;

function nextAjax()
{
    if (numRequests > 0)
    {
        $.ajax({
            // snip...
            success: function (html) {
                // $('#container').html(html);
                nextAjax();
            }    
        });
    }

    numRequests--;
}

nextAjax();

答案 2 :(得分:0)

让回调函数启动下一个请求。