JQuery AJAX:表单提交两次

时间:2014-08-18 16:36:09

标签: php jquery ajax

在我的表单中,我使用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">

2 个答案:

答案 0 :(得分:3)

试试这个,如果它有效,表格会挂钩“提交”两次:

$("form#dealForm").unbind('submit').submit( ...

这将取消绑定提交,然后绑定您的操作。如果表单已经绑定提交,只需修复。这是许多可能性中的一种,可能是由于两次调用您的脚本或者您的验证插件分别绑定提交事件。

注意:这可能会取消您的验证插件或任何其他必须提交的脚本。

如果这确实解决了您的问题,您应该调查为什么正在发生。然后解决该问题,并删除unbind命令。它可以解决这个问题,但也可能在以后引起更多问题。 (AKA:仅用于调试)

答案 1 :(得分:1)

这可能不是你的问题,但这里有待检查。

导致此类问题的一个原因是,如果您已将html / js注入DOM,无论是通过ajax还是其他方式。例如,如果你的页面上有一个按钮,它将一些html表单代码+ js注入div,然后将其显示在一个对话框中供用户完成 - 那种事情。

当您第一次单击提交按钮时,js将处理一次然后停止(因此,一个ajax提交)。但是,下次用户填写表单并单击“提交”时,它将处理/提交两次。下次三点。我已多次遇到这种情况。 解决方案是将js .click.submit事件移出注入的代码。

正如我所说,可能不是你所经历的,但值得了解。