Удостоверьтесь первые концы функции ajax перед вторым

У меня есть функция JavaScript, которая выполняет два последовательных запроса Ajax с помощью jQuery. Я хочу удостовериться, что первый запрос загрузился, прежде чем вторая функция вызвана. Существует ли способ, которым я могу сделать это?

7
задан Brian 4 January 2010 в 23:26
поделиться

8 ответов

Либо укажите асинхронизацию: false в опциях $.ajax, либо выполните второй вызов аякса в опции полного вызова первого вызова.

.
8
ответ дан 7 December 2019 в 03:16
поделиться

Используя jQuery, самый простой способ - это:

 $.ajax({
   type: "POST",
   url: "some.php",       
    success: function(msg){
       $.ajax({
         type: "POST",
         url: "some2.php",

         success: function(msg){
             alert( "End of second call" );
         }
      });
    }
 });
1
ответ дан 7 December 2019 в 03:16
поделиться
$.post("script1.php", {data:"val"}, function(response) {
  $.post("script2.php", {data:response}, function(results) {
    // this second call will be initialized when the first finishes
  });
});
1
ответ дан 7 December 2019 в 03:16
поделиться

В своем обратном вызове для первой функции сделайте второй вызов.

0
ответ дан 7 December 2019 в 03:16
поделиться

Для наилучшего результата, вероятно, следует вызвать вторую функцию в обратном вызове первой.

Например:

$.post("http://www.somewebsite.com/page.php", function(data) {
  // whatever
  function2();
});
0
ответ дан 7 December 2019 в 03:16
поделиться

Пример реализации:

function callback() {$('div#second_ajax_output').load('http://www.google.com');}
$('div#first_ajax_output').load('http://www.yahoo.com',callback);
0
ответ дан 7 December 2019 в 03:16
поделиться

Простой способ - это запустить второй запрос, когда первый вернется (в полном обратном вызове).

Если вам нужен более сложный подход, посмотрите на плагин AjaxQueue. Вы можете ставить запросы в очередь таким образом.

0
ответ дан 7 December 2019 в 03:16
поделиться

Правка: Неправильно прочитал вопрос; виноват. Если вы когда-нибудь захотите, чтобы два AJAX-запроса выполнялись одновременно, но запускали обратный вызов только после того, как оба закончились, вот как вы это делаете!

Попробуйте следующее:

var completedCount = 0;
var callback = function()
{
    completedCount++;
    if (completedCount == 2)
    {
        // Do something.
    }
};

$.post('url-1', {}, callback);
$.post('url-2', {}, callback);
-1
ответ дан 7 December 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: