使用 when() 到 运行 多个 Ajax 函数

Using when() to Run Multiple Ajax Functions

使用 jQuery when(),我正在尝试 运行 表单上的多个 Ajax 函数提交,等待他们收到回复,完成后,最后提交表单。我的代码是:

$('form[name="regForm"]').on('submit', function( e ) {
    e.preventDefault();

    $.when( function () {
        ajaxOne();
        ajaxTwo();
        ajaxThree();
    }
    ).done(function() {
        $('form[name="regForm"]').unbind('submit').submit();
    });
});

表单已提交,但 Ajax 函数从未触发。我究竟做错了什么?感谢您的帮助。

$.when() 写错了

每个 ajax 调用承诺应该是一个参数(或者在 jQuery 3+ 中可以是承诺数组)

$(function(){
    $('form[name="regForm"]').on('submit', function( e ) {
        e.preventDefault();

        $.when( ajaxOne(), ajaxTwo(),  ajaxThree()   
        ).done(function() {
            $('form[name="regForm"]').unbind('submit').submit();
        });
    });
});

这还假设表单选择器是正确的,并且每个 ajax 函数 returns 和 $.ajax 承诺类似

function ajaxOne()(
  return $.ajax({...})    
}

你必须作为参数传递

$.when.apply($, arrayOfDefferds).done(doStuff);

注意获取回复。