表單的重復提交問題


如何防止表單的重復提交...

問題分析:
1、你怎么知道提交的表單是重復的?
2、確認了表單是重復的,如何去防止被提交...

問題解答:
1、個人認為:對同一個表單做了相同的重復操作...就認為是重復表單...也即每次提交表單的內容是相同的就認為是重復的...
2、解決辦法:
  js解決:
(1)對按鈕進行控制

var $button = document.getElementById("btn");//獲取button對象
    $button.attr("disabled","disabled");
    window.setTimeout(function(){
    $button.removeAttr("disabled");},1000);    

當然這么操作的前提是,你在disbaled后,要對表單進行處理,比如清空操作...

(2)做狀態位進行標識...

<script language="javascript"> 
var checkSubmitFlg = false; 
function checkSubmit() { 
    if (!checkSubmitFlg) { 
        checkSubmitFlg = true; 
        return true; 
        }
    else{ 
            alert("不能重復提交"); 
            return false; 
            } 
} 
</script>                         
<form action="XXXX" method="POST" onsubmit="return checkSubmit()"> 
內容:<input type="text" name="content" value=""/><br> 
<input type="submit" value="提交"><br> 
</form>

疑問:做這種標識,如何判斷你是換了另一個表單...

(3)加驗證碼,在每次提交時進行驗證...防止重復提交..

后台程序解決:
大概主要用到一個token機制..
可以參考struts2的token機制,還有Token Session(令牌機制)
在每次表單提交時,action會調用isValidToken()方法,進行判斷是否相同的token,如果相同,
進行提交,如果不同,認為是重復提交..
當然這種前提是:
在你打開新增表單的時候,會調用action,生成token碼..然后在你的表單和session中各保存一份,
當提交調用action時,會進行token檢查,並且在action處理完后,會重置session 中的token,此時你再提交,
就會導致token不一致,沒法提交...當然...意思就是要重新調用action生成新的token,和session保持一致...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM