2012-02-07 180 views
7

我有三个AJAX请求一个接一个地开始,我希望能够同时回显所有数据。同步三个Ajax请求

$.ajax ({ 
     type: "POST", 
     url: "page1.php", 
     data: "var1=" + var1, 
     success: function(msg) { 
      $("#results2").load("page2.php", 
      function (responseText, textStatus, XMLHttpRequest) { 
       $("#results3").load("page3.php", 
       function (responseText, textStatus, XMLHttpRequest) { 
        if (textStatus == "success") { 
         $("#results1").html(msg); 
        } 
       }); 
      }); 
     } 
    }); 

#results1#results2#results3都需要在同一时间与他们的相对数据加载。上面的代码没有这样做。

回答

10

您可以使用jQuery的deferred object在1.5版本中增加:

$.when($.ajax({1}) , $.ajax({2}) , $.ajax({3})) 
.then(function() { 
    alert("tada"); 
}); 
+0

哦,看起来不错.... – 2012-02-07 10:11:10

+0

时间做一些功课。谢谢! – Norse 2012-02-07 10:16:01

+0

是的,延期对象非常强大并且提高了代码的可读性 – 2012-02-07 10:21:31