2012-02-07 13 views
7

Mam trzy żądania AJAX wystrzeliwujące jeden po drugim, i chciałbym móc odtworzyć wszystkie dane jednocześnie.Synchronizacja trzech żądań ajaxowych

$.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 i #results3 wszystkie muszą być ładowane z danymi względnych w tym samym czasie. Powyższy kod tego nie robi.

Odpowiedz

10

można użyć deferred object jQuery dodane w wersji 1.5:

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

Ooh, że ładnie wygląda .... –

+0

czas, aby zrobić kilka prac domowych. Dzięki! – Norse

+0

tak, obiekt odroczony ma dużą moc i poprawia czytelność kodu –