在我的表单中,我使用ajax提交表单。当我单击“提交”按钮时,它会执行两次该方法。有人可以指导我找出问题
$("form#dealForm").submit(function(event){
//disable the default form submission
event.preventDefault();
var $form = $(event.target);
//grab all form data
var formData = new FormData($(this)[0]);
$.ajax({
url: $form.attr('action'),
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
alert(returndata.message);
}
});
return false;
});
HTML:
<form name="dealForm" id="dealForm" action="<?php echo base_url(); ?>deals/update_deal/" method="POST" enctype="multipart/form-data">
答案 0 :(得分:3)
试试这个,如果它有效,表格会挂钩“提交”两次:
$("form#dealForm").unbind('submit').submit( ...
这将取消绑定提交,然后绑定您的操作。如果表单已经绑定提交,只需修复。这是许多可能性中的一种,可能是由于两次调用您的脚本或者您的验证插件分别绑定提交事件。
注意:这可能会取消您的验证插件或任何其他必须提交的脚本。
如果这确实解决了您的问题,您应该调查为什么正在发生。然后解决该问题,并删除unbind
命令。它可以解决这个问题,但也可能在以后引起更多问题。 (AKA:仅用于调试)
答案 1 :(得分:1)
这可能不是你的问题,但这里有待检查。
导致此类问题的一个原因是,如果您已将html / js注入DOM,无论是通过ajax还是其他方式。例如,如果你的页面上有一个按钮,它将一些html表单代码+ js注入div,然后将其显示在一个对话框中供用户完成 - 那种事情。
当您第一次单击提交按钮时,js将处理一次然后停止(因此,一个ajax提交)。但是,下次用户填写表单并单击“提交”时,它将处理/提交两次。下次三点。我已多次遇到这种情况。 解决方案是将js .click
或.submit
事件移出注入的代码。
正如我所说,可能不是你所经历的,但值得了解。