AJAX在提交时形成重复条目

时间:2016-10-03 09:32:02

标签: php ajax duplicates

我已经设置了一个PHP表单并且它自己运行正常但是现在我已经用AJAX连接它了当有人提交表单时我会收到重复的提交,即使他们只是提交了表单一旦将详细信息添加到数据库中多次。

从我的测试来看,好像它发送了两次数据,但看着其他人提交的内容,在某些情况下它可能会发送两次以上但是我无法复制它。

以下是我最初使用的代码:

$("#email-gather").submit(function(e) {

    var url = "https://www.ruroc.com/emailgather.php";

        $.ajax({
               type: "POST",
               url: url,
               data: $("#email-gather").serialize(),
               complete: function(data) { 
                    $('.email-win input.button').val("submitted").attr('disabled', 'disabled').css({'background-color' : '#b34c4c','text-shadow' : 'none'});
               }
        });
        e.preventDefault();
    }); 

我一直在寻找解决方案,我看到一些有类似问题的人说应该使用.live而不是.submit,所以我修改了我的代码:

$( "#email-gather" ).live( "submit", function() {

  event.preventDefault();
  var url = "https://www.ruroc.com/emailgather.php";

    $.ajax({
           type: "POST",
           url: url,
           data: $("#email-gather").serialize(),
           complete: function(data) { 
                $('.email-win input.button').val("submitted").attr('disabled', 'disabled').css({'background-color' : '#b34c4c','text-shadow' : 'none'});
           }
    }); 
});

然而,这也导致了同样的问题,所以我希望你可以解决这个问题。我感谢您就此事提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

在代码的第二部分(应该有效),你有event.preventDefault但是没有定义事件。尝试添加功能(事件),它必须工作。

在第一个中,你可以在ajax调用之前设置防止默认值并取消第二个提交。您需要在ajax函数中添加一个返回true,以告诉您脚本提交是否成功。