在提交表单之前,我需要完成一些ajax请求。

我如何在form.submit()调用中停滞,直到完成所有ajax请求?

var incompleteAjaxCalls = 0

// each ajax call runs incompleteAjaxCalls++
// followed by incompleteAjaxCalls-- upon completion

myForm.submit(function () {
    //sleep while incompleteAjaxCalls > 0;
});

最佳答案

阻止提交表单,然后在ajax调用完成后提交

myForm.submit(function (e) {
    e.preventDefault();

    var self = this;

    $.when(
       $.ajax({url: 'ajax1'}),
       $.ajax({url: 'ajax2'})
    ).always(function() {
        self.submit();
    });

});


编辑:

对于数组,你可以做

myForm.submit(function (e) {
    e.preventDefault();

    var self = this,
        xhr  = [];

    xhr.push(
        $.ajax({url: 'ajax1'})
    );

    xhr.push(
        $.ajax({url: 'ajax2'})
    );

    $.when.apply($, xhr).always(function() {
        self.submit();
    });

关于javascript - 用js/jquery停止提交表单?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22538031/

10-13 04:43