Javascript 如何提交此表单而不陷入无限循环?
我什么都试过了。我发现了其他问题,但没有答案可以解决我的问题:Javascript 如何提交此表单而不陷入无限循环?,javascript,jquery,html,Javascript,Jquery,Html,我什么都试过了。我发现了其他问题,但没有答案可以解决我的问题: $(document).on('submit', 'form#formNuevoContacto', function(event) { var $form = $(this); var $accionActual = $form.find('#action'); $form.find('#action').val('validate'); $.post($form.attr("action"),
$(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()
,但没有成功 您可以使用切换来选择性地预处理提交,或者让浏览器完成其工作;在下面的编辑窗口中,在发出第二次提交之前,我在表单对象中放置了一个名为“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();
});
您应该只执行一个ajax调用,如果错误没有得到验证,就处理它。如果服务器验证了它,那么服务器应该存储它。正如您现在所拥有的那样,它是一个混乱的代码,也是对ajax调用的浪费/时间的浪费。您发布了两次完全相同的数据
$.ajax({
type: {most like put 'POST' here},
url: {action url},
data: {your form},
success: success_function(),
error: error_function()
});
提交表格之前检查表格是否有效有什么意义?为什么不只使用一个AJAX请求并在有错误的情况下处理错误?为什么在post请求的成功回调中执行
$form.submit()
?从按钮提交是什么意思?类似于$('input[type=submit])。在('click',…..???成功在哪里???成功在响应中。resultValidation==“true”,但验证后不会发生任何事件。。