4

我有一个简单的 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;
    });
});
4

3 回答 3

11

即使我在开发 AJAX 登录表单时也遇到了同样的问题。经过几个小时的谷歌搜索,我找到了解决方案。我希望这能帮助你。

基本上,在完成 ajax 请求后,您必须取消绑定表单提交操作的当前实例。所以在return 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;
        });
    });


于 2013-03-29T17:05:19.593 回答
1

我有同样的问题。

我在以下位置找到了解决方案: jquery:提交表单两次

Basicaly 将 .submit() 添加到 Saurabh Mishra 答案:

$('#form1').unbind('submit').submit();
于 2015-01-28T23:52:10.543 回答
0

取消绑定表单可能会破坏您的 Ajax。我发现只要我先声明表格。

$('#my_form').ajaxForm

一切都按预期工作,并遵循标准协议。我刚刚花了一天时间在表单提交中寻找“缺少模板”错误,因为我取消了表单的绑定。

于 2015-02-16T17:40:10.220 回答