我需要两个AJAX
调用的结果,之后我将使用检索到的信息来创建表。
我很好奇......在另一个AJAX
内嵌入一个AJAX
调用,并在第二个{{1}}调用结束时保留用于创建表的代码,这是实现此目的的正确方法吗? p>
感谢您的帮助。
答案 0 :(得分:9)
我建议使用jQuery deferreds。
$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/
答案 1 :(得分:0)
第一个承诺是处理这个问题的好方法,但是jquery承诺实现并不是很好(它不符合规范),但它确实有效。如果你可以使用不同的库我推荐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)