使用jQuery Deferred对象链接多个ajax调用

4
在寻找类似于以下描述的解决方案时:如何使用jquery链接ajax调用 我正在寻找一个使用 jquery v1.52 的解决方案。
我有一组要发出的 ajax 请求,但每个 ajax 请求只能在上一个 ajax 调用完成后发送。我尝试使用 jquery 1.5.2 实现这一点,但始终无法实现。 这里是我从上述示例中修改的内容,但不起作用。有谁可以帮助我让它正常工作? 预期输出为 http://jsfiddle.net/k8aUj/3/ P.S:我无法升级到1.5.2以上版本。

1
https://dev59.com/nWw15IYBdhLWcg3wi8dv - Vishal
2
@Vishal,那个答案并没有解决在上一个ajax调用成功后启动下一个的问题。 - Fabrizio Calderan
啊!我没看到成功的部分...忽略之前的评论,我会尝试想出一些解决方案。 - Vishal
1个回答

4

嘿!问题已解决!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();

你想要的是这个吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接