我正在使用PHP。我想完成jQuery AJAX流程,(完成流程后数据返回主页)。
然后做下一个jQuery的事情。关于如何做的任何想法?
$.ajax({
url: "page1.php",
dataType: "html",
type: 'POST',
data: "value=" + value,
success: function(data){
//some process
}
});//ajax1
$.ajax({
url: "page2.php",
dataType: "html",
type: 'POST',
data: "value=" + value,
success: function(data){
//some process
}
});//ajax2
$.ajax({
url: "page3.php",
dataType: "html",
type: 'POST',
data: "value=" + value,
success: function(data){
//some process
}
});//ajax3
// finish all the 3 ajax process, do the below code
$(".page").css('display','block');
答案 0 :(得分:12)
如果您使用的是jQuery 1.5或更高版本,则可以使用天堂般的$.when
构造,该构造使用首先在该版本的jQuery中实现的$.Deferred
概念。当所有几个AJAX请求都已完成时,您可以运行一个函数(或多个函数)。
所以你的代码看起来像这样:
$.when($.ajax({
url: "page1.php",
dataType: "html",
type: 'POST',
data: "value=" + value,
success: function (data) {
//some process
}
}), $.ajax({
url: "page2.php",
dataType: "html",
type: 'POST',
data: "value=" + value,
success: function (data) {
//some process
}
}), $.ajax({
url: "page3.php",
dataType: "html",
type: 'POST',
data: "value=" + value,
success: function (data) {
//some process
}
})).then(function () {
});
答案 1 :(得分:2)
如果你有任意数量的ajax操作,你可以这样做:
var arr = [];
arr.push($.ajax(...));
arr.push($.ajax(...));
/* put as many ajax operations as you want into arr */
$.when.apply(arr).then(function() { /* on success */ },
function() { /* on error */ });
这是我最喜欢的同步多个ajax调用的技术。
答案 2 :(得分:1)
只是为了记录,所以jQuery-1.5之前的答案也在这里:
$.ajax({
url: "page1.php",
dataType: "html",
type: 'POST',
data: "value=" + value,
success: function(data){
$.ajax({
url: "page2.php",
dataType: "html",
type: 'POST',
data: "value=" + value,
success: function(data){
$.ajax({
url: "page3.php",
dataType: "html",
type: 'POST',
data: "value=" + value,
success: function(data){
// finish all the 3 ajax process, do the below code
$(".page").css('display','block');
}
});//ajax3
}
});//ajax2
}
});//ajax1
希望,如果没有别的,这说明了新的jQuery 1.5做事方式的价值: - )