2

我需要两次AJAX调用的结果,之后我将使用检索到的信息来创建一个表。

我很好奇......是否将一个调用嵌套在另一个AJAX调用中,并在第二个调用结束时保留用于创建表的代码AJAX以实现此目的的正确方法?

谢谢您的帮助。

4

2 回答 2

10

我建议为此使用 jQuery 的延迟。

$ajax1 = $.ajax({
    url: '/page1'
});

$ajax2 = $.ajax({
    url: '/page2'
});

$.when($ajax1, $ajax2).done(function(data1, data2){
    // data1[0] is the result of the 1st AJAX call,
    // and data2[0] is the result of the 2nd
    // Each argument is an array with the following structure: [ data, statusText, jqXHR ]
});

两个 AJAX 调用都将被触发,并且只有在两者.done都完成后才会运行。

文档$.whenhttp ://api.jquery.com/jQuery.when/

于 2013-11-06T17:10:28.350 回答
0

第一个 promise 是处理这个问题的好方法,但是 jquery promise 的实现不是很好(它不是规范)但它确实有效。如果你可以使用不同的库,我推荐 q.js 否则这里是如何在 jquery 中做到这一点

我通常使用.then管道传递第二个 ajax 调用的返回值并传递承诺

function makeRequests(){
  var req1 = $.ajax("myurl");

  return req1.then(function(data){
     var req2 = $.ajax("second/one")


     return req2;
  })
}

makeRequest().done(function(dataFromReq2){
    //do work after both are done
})

如果您需要同时执行两个请求,请使用$.when(req1, req2)

于 2013-11-06T17:12:15.277 回答