Могу ли я сгруппировать результаты метода jQuery $.when?
Вопрос
У меня есть следующий код:
$('#remove-commercial-products-modal').find('form').submit(function() {
var promises = [];
var $modal = $(this).closest('.modal');
$(this).find('input:checkbox:checked').each(function() {
promises.push(
$.ajax({
url: '/commercial/products/unclaim/' + $(this).val() + '/',
dataType: 'json',
timeout: 10000,
cache: false
}));
});
$.when.apply($, promises).done(function(result) {
$modal.modal('hide');
});
return false;
});
Итак, когда моя форма отправлена, я собираю значения установленных флажков и создаю массив обещаний, каждое из которых является вызовом $.ajax.
Мои вызовы выполняются, и код в моем .done
функция выполнена.
Однако я думаю, что .done
ожидает, что номер из аргументов, по одному для каждого обещания.Но я не знаю, сколько у меня есть заранее, и я надеялся на массив результатов (каждый из которых является ответом на вызов $.ajax.)
Кто-нибудь знает, могу ли я сгруппировать свои ответы?Спасибо!
Решение
$.when.apply($, promises).done(function() {
var l = arguments.length,
i,
jqxhr;
for( i = 0; i < l; ++i ) {
jqxhr = arguments[i][2]; //The i:th jQXHR passed
}
});
Видеть доктора
Не связан с StackOverflow