小编典典

jQuery.when了解

ajax

我正在尝试使用jQuery.when触发两个ajax请求,然后在两个请求完成后调用一些函数。这是我的代码:

var count = 0;
var dfr;

var showData = function(data) {
    dfr.resolve();
    alert(count);
   // Do something with my data data received
};

var method1 = function() {
    dfr = $.Deferred();

    return $.ajax('localhost/MyDataService/DataMethod_ReturnsData', {
        dataType: "jsonp",
        jsonp: "$callback",
        success: showData
    });
};

var method2 = function() {
    return $.ajax('localhost/MyDataService/DataMethod_ReturnsCount', {
        dataType: "jsonp",
        jsonp: "$callback",
        success: function(data) {
            count = data.d.__count;
        }
    });
};

$.when(method1(), method2())
    .then(showData());

但是,这没有按预期方式工作。Ajax调用method1将返回要在其中使用的数据,showData()而Ajax调用method2将返回要分配给var
count并随后在中使用的count showData()

但是,当我启动上面的代码时,先method1被调用,然后method2再将showData数据保留showData为as
'undefined'。我如何才能做到这$.when一点,据我所知,只有当两个返回$.promise的函数都执行时,才能进行。我希望两个ajax调用都应该并行调用,然后根据两个调用的结果显示以后的结果。


阅读 269

收藏
2020-07-26

共1个答案

小编典典

function showData(data1, data2) {
    alert(data1[0].max_id);
    alert(data2[0].max_id);
}

function method1() {
    return $.ajax("http://search.twitter.com/search.json", {
        data: {
            q: 'ashishnjain'
        },
        dataType: 'jsonp'
    });
}

function method2() {
    return $.ajax("http://search.twitter.com/search.json", {
        data: {
            q: 'ashishnjain'
        },
        dataType: 'jsonp'
    });
}

$.when(method1(), method2()).then(showData);​

这是一个工作的jsFiddle

2020-07-26