我已经尝试了一切。我发现其他问题,但没有答案解决我的问题:
$(document).on('submit', 'form#formNuevoContacto', function(event) {
var $form = $(this);
var $accionActual = $form.find('#action');
$form.find('#action').val('validate');
$.post($form.attr("action"), $form.serialize(), function(response) {
if (response.resultValidation == "true") {
$form.submit(); // ==> INFINITE LOOP!
} else {
alert('Form is not valid!');
}
});
event.preventDefault();
});
我尝试过:$form.unbind().submit()
但是没有用。
答案 0 :(得分:0)
您可以使用切换选择性地预处理提交或以其他方式让浏览器完成其工作;在下面的编辑中,在发出第二个提交之前,我将一个变量放在名为" isPreProcessing"的表单对象中。如您所见,代码所做的第一件事是检查此值是否存在,如果是,则将提交委托给浏览器。
$(document).on('submit', 'form#formNuevoContacto', function(event) {
if(this.isPreProcessing) {
//allow for actual submit to run
this.isPreProcessing = false;
return;
}
var $form = $(this);
var $accionActual = $form.find('#action');
$form.find('#action').val('validate');
$.post($form.attr("action"), $form.serialize(), function(response) {
if (response.resultValidation == "true") {
//prevent the loop
this.isPreProcessing = true;
$form.submit();
} else {
alert('Form is not valid!');
}
});
event.preventDefault();
});
答案 1 :(得分:0)
你应该只做一个ajax调用,如果它没有验证就处理错误。如果服务器验证它,服务器应该存储它。你现在拥有它是乱码,也浪费了ajax调用/浪费时间。您已经两次发布完全相同的数据
$.ajax({
type: {most like put 'POST' here},
url: {action url},
data: {your form},
success: success_function(),
error: error_function()
});