为什么jquery两次提交我的ajax表单?

当我的表单被提交时,如果它不喜欢field1field2包含的值,则php将返回false 。 如果它确实喜欢那些字段,那么它将返回true 。 如果用户提交表单并且php返回false ,则会出现警报。 关闭警报窗口后,如果用户立即将新(好)数据输入这些字段并再次提交表单,则表单以某种方式提交两次。 为什么? 我怎样才能解决这个问题?

 $("form#myForm").on('submit',function() { $.ajax( { type: "POST", url: 'myfile.php', dataType: 'html', data: { field1:$("input[name=field1]").val(), field2:$("input[name=field2]").val() }, success: function(data) { if(data == false) { alert('hello world'); } else { // stuff } } }); return false; }); 

2014年也提出了同样的问题( jquery ajax表格提交了两次 )。

e.preventDefault()本身适用于按钮和锚链接,但在提交表单时不适用于我(与上面的Nancy代码相同)。

我不得不添加e.stopImmediatePropagation(); 就在我的ajaxpost之前。 这阻止了ajax调用被提交两次。

因为您正在执行ajaxpost,所以您需要禁用默认的提交按钮行为。 见http://api.jquery.com/event.preventDefault/

return false之前,在下面添加此代码

 $('#myForm').unbind('submit'); return false;