2012-02-07 13 views
7

Tôi có ba yêu cầu AJAX kích hoạt một yêu cầu khác và tôi muốn có thể phản hồi lại tất cả dữ liệu cùng một lúc.Đồng bộ hóa ba yêu cầu 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 tất cả cần phải được nạp với các dữ liệu liên quan của họ cùng một lúc. Đoạn mã trên không hoạt động.

Trả lời

10

bạn có thể sử dụng deferred object của jQuery được thêm vào trong phiên bản 1.5:

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

Ooh trông đẹp .... –

+0

Thời gian để làm một số bài tập về nhà. Cảm ơn! – Norse

+0

có, đối tượng trì hoãn rất mạnh và cải thiện khả năng đọc mã –