在同一页面上按顺序激活几个.ajax调用

时间:2011-01-15 19:29:27

标签: jquery

我在同一页面上有几个jQuery .ajax调用,如:

$.ajax({
    url: "page1.php",
    cache: false,
    success: function(html) {
        //do some stuff with returned html
    }
});

当我运行页面时,有些可能无法完成。我猜它们都是在同一时间开始的。

我有没有办法让他们排队,以便按特定顺序开火,直到前一个完成?

4 个答案:

答案 0 :(得分:2)

你可以链接它们,如下:

$.ajax({
    url: "page1.php",
    cache: false,
    success: function(html) {
        //do some stuff with returned html
    },
    complete: function(xhr) {
        // do your next call
    }
});

等待第一个完成,然后再制作下一个。一个更好的方法是这样做:

var waiting = 0;

// for each request:
waiting++;
$.ajax({
    url: "page1.php",
    cache: false,
    success: function(html) {
        // save the returned stuff in an array
    },
    complete: function(xhr) {
        if (--waiting <=0) { // == would probably suffice, but i like to be safe.
          //process the result
        }
    }
});

这减少了加载时间,并允许您按顺序处理它。

答案 1 :(得分:1)

是的,您可以按照编写代码的方式执行此操作。通过在第一个回调函数中进行下一个AJAX调用,您可以请求:

$.ajax({
    url: "page1.php",
    cache: false,
    success: function(html) {
        // Make another call here
        $.ajax({
            url: "page1.php",
            cache: false,
            success: function(html) {
                // and so on
            }
        });
    }
});

答案 2 :(得分:0)

AjaxQueue插件救援!

答案 3 :(得分:0)

您可以查看允许您对请求进行排队的following plugin