2016-10-03 51 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