【问题标题】:Chaining multiple ajax calls with jquery deferred objects使用 jquery 延迟对象链接多个 ajax 调用
【发布时间】:2012-09-07 12:14:14
【问题描述】:

在寻找类似于此处描述的解决方案时: How to chain ajax calls using jquery 我正在寻找使用 jquery v1.52 的解决方案。

我有一组要发出的 ajax 请求。但是每个 ajax 请求只有在完成前一个 ajax 调用后才能发送。我正在尝试使用 jquery 1.5.2 来实现这一点,但无法做到。 Here 是我从上面提到的例子中修改的。这没用。谁能帮我搞定这个工作?预期输出为http://jsfiddle.net/k8aUj/3/

P.S:我无法升级到 1.5.2 以上的版本

【问题讨论】:

  • @Vishal,这个答案并没有解决在前一个成功后启动 ajax 调用的问题。
  • 啊!没有看到成功的部分。。忽略前面的评论,我会努力解决的。

标签: javascript jquery jquery-deferred


【解决方案1】:

哟!解决了! http://jsfiddle.net/sandhyasriraj/AaHZv/

var x = null;
var i = 0;
x= $.Deferred();
var countries=["US","CA","MX","bx","fs","ZX"];
function log(msg) {
    var $out=$("<div />");
    $out.html(msg);
    $("#console").append($out);
}


callX = function(j) {
    return $.ajax({
            type: "GET",
            url: "/echo/json/",
            data: {country:countries[i]},
            dataType: "JSON",
            success: function(){
                log("Successful request for [" + countries[j] + "]");
                i++;      
                x.resolve();
                xy();
               }
        });

}
x.resolve();
xy = function()
{
    debugger;
    if(i > 5)
        return;

     $.when(x).then(function() {
        x = $.Deferred();
        log("Making request for [" + countries[i] + "]");
        callX(i);
    });
}
xy();

这是你想要的吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    相关资源
    最近更新 更多