Два вызова AJAX: при успешной визуализации контента в браузер одновременно - PullRequest
0 голосов
/ 16 февраля 2011

У меня проблема с двумя вызовами AJAX. Я звоню из объекта jquery. В случае успеха я хочу, чтобы вызов AJAX получил содержимое первым, чтобы дождаться его обработки, пока второй запрос AJAX также не получит содержимое.

Ответы [ 4 ]

1 голос
/ 16 февраля 2011

если вы можете использовать jQuery 1.5, то это решит вашу проблему.

Представляем $.when()

Пример: Выполнить функцию после two ajax-запросы успешны . (См. jQuery.ajax () документация для полное описание успеха и случаи ошибок для 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.");
   }
});
1 голос
/ 16 февраля 2011

Вы можете сделать что-то вроде этого:

(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
      }
   }
})();
0 голосов
/ 16 февраля 2011

что делать, если вы используете эту функцию

$(document).ready(function(){
    $('selector').jaxStop(function() {
      //Do some thing
         WhenAjaxEnds();
    });
});

function  WhenAjaxEnds(){
  //do something here ....
}
0 голосов
/ 16 февраля 2011

Просто добавьте к ответу выше, вы можете просто измерить длину datas вместо отдельной переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...