Domanda

Ho il seguente codice:

$('#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;                                                                                    
});
.

Quindi, quando viene inviato il mio modulo, raccolgo i valori delle caselle di controllo selezionati e ho creato una serie di promesse, ognuna delle quali è una chiamata $ .ajax.

Le mie chiamate vengono eseguite e viene eseguito il codice nella mia funzione .done.

Tuttavia, penso che .done stia aspettando un numero di argomenti, uno per ogni promessa.Ma non so quanti mi sono in anticipo, e speravo in una serie di risultati (ognuno è la risposta della chiamata $ .ajax.)

Qualcuno sa se posso raggrupparsi le mie risposte? Grazie!

È stato utile?

Soluzione

$.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  
    }                                                              
});     
.

Vedi Documenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top