2012-02-07 2 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

вы можете использовать deferred object из JQuery добавлены в версии 1.5:

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

OOH, который выглядит хорошо .... –

+0

время, чтобы сделать домашнее задание. Благодаря! – Norse

+0

Да, отложенный объект является очень мощным и улучшает читаемость кода –

 Смежные вопросы

  • Нет связанных вопросов^_^