我需要两次AJAX
调用的结果,之后我将使用检索到的信息来创建一个表。
我很好奇......是否将一个调用嵌套在另一个AJAX
调用中,并在第二个调用结束时保留用于创建表的代码AJAX
以实现此目的的正确方法?
谢谢您的帮助。
我建议为此使用 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
都完成后才会运行。
文档$.when
:http ://api.jquery.com/jQuery.when/
第一个 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)