uaf0x
@uaf0x
Всего понемногу

Как отследить завершение всех ajax запросов на странице?

Собственно задача такая, нужно в цикле запустить N запросов к серверу, после выполнения всех запросов нужно будет пустить ещё 1 контрольный. Как отследить завершение всех запросов ajax на странице ?

Сейчас мой говнокод выглядет так :
jQuery('.btn-primary').on('click', function(event) {
		event.preventDefault();
		for (var i = 0; i <= jQuery('#count').val(); i++) 
		{
			var form = jQuery('.form-horizontal').serializeArray();
			jQuery.ajax({
				url: 'myurl',
				type: 'POST',
				data: {form, i},
					success:function(data)
					{
						jQuery('.cool').append(data);
					}			
			});

		}		
	});


Очень буду рад и счастлив конструктивным предложением.

PS
Предложения аля учи мат часть можете не писать и так в процессе :)
  • Вопрос задан
  • 2658 просмотров
Пригласить эксперта
Ответы на вопрос 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Да, конечно, можно смотреть на значение внешнего счетчика с определенным интервалом...
Но можно сразу сделать нормально:
var form = {foo: 'bar'},
    requests = [],
    index,
    $xhr;

for (var index = 0; index <= 5; index++) {
    $xhr = $.post('myurl', {'form': form, 'index': index});

    $xhr.done(function (data) {
        console.log('request done');
    });

    requests.push($xhr);
}

$.when.apply($, requests).done(function () {
    console.log('all done');
})

P.S. Как сделать так, чтобы функция выполнялась только после того, как другая завершится?
Ответ написан
@sergeystepanov1988
Сделать с помощью метода ajaxStop:
$( document ).ajaxStop(function() {
     $('.cool').append(data);  
});
Ответ написан
@LiguidCool
Ну как вариант сделать счетчик, и при вызове запроса прибавлять его, а при окончании или ошибке вычитать. При нуле все запросы закончатся.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы