我有一個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'});
}
});
});
但是這也導致了同樣的問題,所以我希望你可能有這個問題的解決方案。我很感謝您能就此提供的任何幫助。
您可能需要一個唯一的索引 – e4c5
在運行異步'.ajax'調用之前,需要調用'e.preventDefault();'。在第一個片段中,然後不要運行'$(「#email-gather」)。submit(function(e){}'end – RiggsFolly
在第二個片段中,按照正確的順序有東西,但是你沒有'事件'參數傳遞在'函數()'___這應該會產生一個編譯錯誤,我會想到____ – RiggsFolly