当我提交表单时,如果php不喜欢false
和field1
中包含的值,则会返回field2
。如果它确实喜欢这些字段,那么它将返回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;
});
答案 0 :(得分:4)
2014年提出了同样的问题(jquery ajax form submits twice)。
e.stopImmediatePropagation();
本身适用于按钮和锚点链接但在提交表单时并不适合我(与上面的Nancy代码完全相同)。
我必须在我的ajax帖子之前添加<specFlow>
<unitTestProvider name="MSTest"></unitTestProvider>
</specFlow>
。这阻止了ajax调用被提交两次。
答案 1 :(得分:2)
在return false
$('#myForm').unbind('submit');
return false;
答案 2 :(得分:1)
因为您正在执行ajax帖子,所以您需要禁用默认的提交按钮行为。见http://api.jquery.com/event.preventDefault/