两个AJAX调用:成功后将内容同时呈现给浏览器

时间:2011-02-16 01:03:36

标签: javascript jquery ajax

我遇到两个AJAX调用问题。我是从jquery对象调用它。我希望AJAX调用成功,首先让内容等待呈现,直到第二个AJAX请求也收到内容。

4 个答案:

答案 0 :(得分:1)

你可以这样做:

(function() {
   var executedAmount = 0;
   var datas = {};
   //Ajax call 1:
   $.ajax({
      'success': function(data) {
          executedAmount++;
          datas[0] = data;
          callBack();
      }
   });
   //Ajax call 2:
   $.ajax({
      'success': function(data2) {
          executedAmount++;
          datas[1] = data2;
          callBack();
      }
   });
   function callBack() {
      if (executedAmount == 2) {
          //Do something with datas here
      }
   }
})();

答案 1 :(得分:1)

如果你可以使用jQuery 1.5,那么这将解决你的问题。

介绍$.when()

  

示例: 两个之后执行一个功能   ajax请求成功 。 (见   一个jQuery.ajax()文档   完整的成功和描述   ajax请求的错误情况。)

$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1,  a2){
    /* a1 and a2 are arguments resolved for the 
        page1 and page2 ajax requests, respectively */
   var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */
   if ( /Whip It/.test(jqXHR.responseText) ) {
      alert("First page has 'Whip It' somewhere.");
   }
});

答案 2 :(得分:0)

只需添加上述答案,您就可以测量datas的长度,而不是单独使用变量。

答案 3 :(得分:0)

如果您使用此功能

$(document).ready(function(){
    $('selector').jaxStop(function() {
      //Do some thing
         WhenAjaxEnds();
    });
});

function  WhenAjaxEnds(){
  //do something here ....
}