我有一个简单的AJAX表单,在我提交时可以正常工作。但是,如果我然后将新数据输入到相同的表单中(不刷新页面),则它会提交表单两次。如果我第三次这样做,那么它会三次提交表单,依此类推。它为什么这样做?这是我的代码:
$(document).ready(function(){
$("#myForm").submit(function() {
var myField = $('#myID).val();
$.ajax({
type: "POST",
url: 'myFile.php',
dataType: 'html',
data: {myData:myField},
success: function(data){
alert(data);
}
});
return false;
});
});
答案 0 :(得分:10)
即使我在开发AJAX登录表单时遇到同样的问题。谷歌搜索几个小时后,我找到了解决方案。我希望这能帮到你。
基本上,在完成ajax请求后,您必须取消绑定表单提交操作的当前实例。 因此,在返回false;
之前添加此行$("#myform").unbind('submit');
因此,您的整个代码应该看起来像
$(document).ready(function(){
$("#myForm").submit(function() {
var myField = $('#myID).val();
$.ajax({
type: "POST",
url: 'myFile.php',
dataType: 'html',
data: {myData:myField},
success: function(data){
alert(data);
}
});
/* Add this line */
$("#myform").unbind('submit');
return false;
});
});
答案 1 :(得分:1)
我遇到了同样的问题。
我找到了解决方案: jquery : submitting a form twice
Basicaly将.submit()添加到Saurabh Mishra回答:
$('#form1').unbind('submit').submit();
答案 2 :(得分:0)
取消绑定表单可能会破坏您的Ajax。我发现只要我先申报表格。
$('#my_form').ajaxForm
一切都按预期工作,并遵循标准协议。我只花了一天时间追逐缺少的模板'表单提交时出错,因为我取消了表单的绑定。