我已经设置了一个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'});
}
});
});
然而,这也导致了同样的问题,所以我希望你可以解决这个问题。我感谢您就此事提供的任何帮助。
答案 0 :(得分:0)
在代码的第二部分(应该有效),你有event.preventDefault但是没有定义事件。尝试添加功能(事件),它必须工作。
在第一个中,你可以在ajax调用之前设置防止默认值并取消第二个提交。您需要在ajax函数中添加一个返回true,以告诉您脚本提交是否成功。