Puis-je regrouper les résultats de la méthode $.when de jQuery ?
Question
J'ai le code suivant:
$('#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;
});
Ainsi, lorsque mon formulaire est soumis, je collecte les valeurs des cases cochées et j'ai créé un tableau de promesses, dont chacune est un appel $.ajax.
Mes appels sont exécutés et le code dans mon .done
la fonction est exécutée.
Cependant, je pense que .done
s'attend à un nombre d'arguments, un pour chaque promesse.Mais je ne sais pas combien j'en ai à l'avance, et j'espérais un éventail de résultats (chacun étant la réponse de l'appel $.ajax.)
Est-ce que quelqu'un sait si je peux regrouper mes réponses ?Merci!
La solution
$.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
}
});
Voir documents
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow