1

我有几个获取一些数据的 ajax 请求:

$.ajax({
    url: '/bin/MVC/Reporting/GetReportTemplates',
    type: "GET",
    success: function (data) {
        reportingMetaData.ReportTemplates = data.Data;
    }
});

$.ajax({
    url: '/bin/MVC/Reporting/GetReportTopTypes',
    type: "GET",
    success: function (data) {
        reportingMetaData.ReportTopTypes = data.Data;
    }
}

在这两个都返回之后,我想运行另一个函数。

我知道 jquery deferred,但我从未使用过它,并且不确定如何在这种情况下应用它。

有人可以帮忙吗?

4

2 回答 2

4
var a1 = $.ajax({
    url: '/bin/MVC/Reporting/GetReportTemplates',
    type: "GET"
});
var a2 = $.ajax({
    url: '/bin/MVC/Reporting/GetReportTopTypes',
    type: "GET"
});
$.when(a1, a2).then(function() {
    //Both ajax requests have completed successfully
});
于 2012-07-26T16:49:35.410 回答
3

你需要$.when().

var req_1 = $.ajax({...});
var req_2 = $.ajax({...});
$.when(req_1, req_2).done(function(response_1, response_2) {
    //do something here when both requests done
});

还值得指出的是,$.when()可以将延迟或非延迟对象作为参数。这意味着它可以在请求可能是同步或异步的情况下起作用。如果你碰巧在英国,我即将在 .NET 杂志上发表的一篇文章更详细地介绍了这一点。

于 2012-07-26T16:49:48.487 回答