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!

Était-ce utile?

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
scroll top