0

次のコードがあります。

$('#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関数内のコードが実行されます。

しかし、それはプロミスごとに 1 つずつ、多数の引数を.done期待していると思います。しかし、事前にいくつあるかはわかりません。結果の配列を期待していました (それぞれが $.ajax 呼び出しの応答です)。

回答をグループ化できるかどうか知っている人はいますか? ありがとう!

4

1 に答える 1

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

ドキュメントを見る

于 2012-07-29T12:53:14.857 に答える