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

JQuery如何在ajax调用成功后重新提交表单,jquery,ajax,forms,Jquery,Ajax,Forms,我使用JQuery通过ajax请求执行表单提交。我用 form.submit(function() { if( success ) { return true; } validate(); //proceeds to an ajax call return false; } 请求成功后,我希望继续表单提交或用户回调。因此,如果用户回调未定义,我将在表单验证成功时提交表单(从我的validate函数) ajax成功回调将调用config.suc

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

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

    validate(); //proceeds to an ajax call

    return false;
}
请求成功后,我希望继续表单提交或用户回调。因此,如果用户回调未定义,我将在表单验证成功时提交表单(从我的validate函数)

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

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


有什么解决办法吗。我希望在提供时使用用户回调,但在不提供时继续默认表单提交,而且由于我使用ajax函数验证表单,ajax成功回调会使事情变得复杂。

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


后一种方法实际上是jQuery validate插件所建议的绕过潜在问题的方法。

实际上,
.submit()
也会导致表单的默认提交操作。我希望文档能够用一行代码描述这样说:这听起来像是一个完美的解决方案,我认为它是(使用表单而不是jquery对象中包装的表单),但它似乎仍然不适合我。在从$.ajax的success函数调用的success回调中,我尝试使用$form[0].submit()(我使用$来表示jquery对象)。console.log在使用$form[0]时会输出一个裸表单。submit,甚至尝试过form.submit,但由于在$form[0]之后有任何其他代码调用,因此代码似乎就停止了。submit()不会执行吗?有什么想法吗?如果可以的话,我可以粘贴我的jquery代码,位置:你有我们可以测试的页面吗?当我删除它的AJAX部分时,它对我很有用:似乎将sentinel值与$form.click()一起使用是一个适合我的解决方案。然而,经过进一步调查,我发现服务器端的这种双重帖子并不是我想要的。一旦ajax返回true,所有成功操作都应该在服务器端完成,并且只应该发生重定向。我已在此处更新了代码:。非常感谢您的支持。我的意思是说$form.find(':submit')。单击()而不是$form.click();
config = {
    successCallback: function() {
        success = true;
        form.submit(); //does not work
    }
};

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