jQuery如何在ajax调用成功后重新提交表单

时间:2010-06-10 21:21:32

标签: jquery ajax forms

我正在使用JQuery通过ajax请求执行表单提交。我用

form.submit(function() {
    if( success ) {
        return true;
    }

    validate(); //proceeds to an ajax call

    return false;
}

根据请求成功,我想继续进行表单提交或用户回调。因此,如果未定义用户回调,我将在表单验证成功时提交表单(来自我的验证函数)。

config = {
    successCallback: function() {
        success = true;
        form.submit(); //does not work
    }
};

validate = function() {
    $.ajax(
        ...
        success: function(data) {
            //code logic
            config.successCallback();
        }
    );
};

ajax成功回调将调用config.successCallback(),如果它从未被用户覆盖,它将继续正常表单提交。我尝试使用实例变量(成功)来确保'return true'将继续进行默认表单提交。

不幸的是,这不起作用。似乎阻止默认表单提交的'return false'语句将忽略任何进一步的提交调用,即使设置了实例变量也是如此。它只能在再次点击提交按钮后才能工作(这使得它可以工作两次)。

是否有任何解决方法。我希望在提供时都使用用户回调,但在没有时继续使用默认表单提交,因为我使用ajax函数来验证表单,所以ajax成功回调使事情变得复杂。

1 个答案:

答案 0 :(得分:2)

确保success在范围内,或者只是在成功回调中使用form[0].submit()来提交DOM表单并绕过jQuery注册的处理程序(假设集合中只有一个DOM表单)。 / p>

http://jsfiddle.net/J4nsx/

后一种方法实际上是jQuery validate插件建议如何解决too much recursion的潜在问题。