3

我正在使用 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');
4

3 回答 3

12

如果您使用的是 jQuery 1.5 或更高版本,则可以使用天堂$.when构造,它使用了$.Deferred在该版本的 jQuery 中首次实现的概念。当所有几个 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 () {

});
于 2011-06-10T22:55:07.860 回答
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 调用的技术。

于 2011-06-11T00:51:11.260 回答
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 做事方式的价值 :-)

于 2011-06-11T01:39:11.313 回答