2016-10-03 23 views
0

我有一个PHP表单设置,它对自己的工作很好,但现在,我已经与AJAX挂钩了,即使有人提交表单时,我也会收到重复提交他们只有在多次将详细信息添加到数据库后才提交表单。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'}); 
      } 
    }); 
}); 

但是这也导致了同样的问题,所以我希望你可能有这个问题的解决方案。我很感谢您能就此提供的任何帮助。

+0

您可能需要一个唯一的索引 – e4c5

+0

在运行异步'.ajax'调用之前,需要调用'e.preventDefault();'。在第一个片段中,然后不要运行'$(“#email-gather”)。submit(function(e){}'end – RiggsFolly

+0

在第二个片段中,按照正确的顺序有东西,但是你没有'事件'参数传递在'函数()'___这应该会产生一个编译错误,我会想到____ – RiggsFolly

回答

0

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

否则,在第一个中,您可以在ajax调用之前放置预设默认值,并取走第二次提交。您需要在ajax函数中添加返回true来告诉您脚本提交是成功的。

+0

感谢您的响应如此之快我试着通过函数传递“event”它也发送一个重复的条目不幸 – cyanoxide

+0

您是否已经在完整的函数中返回true? –

+0

$(“#email-gather”).live(“submit”,funct离子(事件){ event.preventDefault(); var url =“https://www.ruroc.com/emailgather.php”; $阿贾克斯({ 类型: “POST”, 网址:网址, 数据:$( “#电子邮件收集”)序列化(), 完成:功能(数据){ $(”电子邮件('disabled','disabled')。css({'background-color':'#b34c4c','text-shadow':'none'} ); return true; } }); }); – cyanoxide