我有两个AJAX调用的问题。我从一个jquery对象调用它。我希望在AJAX调用成功后,首先获得内容的人等待呈现它,直到第二个AJAX请求也接收到内容。
发布于 2011-02-16 09:08:05
你可以这样做:
(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
      }
   }
})();发布于 2011-02-16 09:24:46
如果您可以使用jQuery 1.5,那么这将解决您的问题。
$.when()简介
示例:在两个ajax请求成功后执行函数。(有关ajax请求的成功和错误案例的完整描述,请参阅jQuery.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.");
   }
});发布于 2011-02-16 09:15:17
为了补充上面的答案,您可以只测量datas的长度,而不是使用单独的变量。
https://stackoverflow.com/questions/5011431
复制相似问题