1. 程式人生 > >防止表單的重復提交

防止表單的重復提交

scrip als 判斷 spa 三種 再次 按鈕 將不 正常

場景有三種:

1:在網絡延遲的情況下讓用戶有時間點擊多次submit導致重復提交

2:表單提交後點擊刷新按鈕導致重復提交

3:提交後,點擊瀏覽器的後退然後再次提交

解決的思路有常用的幾種:

1、通過JS,提交表單之後將按鈕設置為不可用。

<script type="text/javascript">
var isCommitted = false;//表單是否已經提交標識,默認為false
function dosubmit(){
if(isCommitted==false){
isCommitted = true;//提交表單後,將表單是否已經提交標識設置為true
return true;//返回true讓表單正常提交
}else{
return false;//返回false那麽表單將不提交
}
}
</script>

2、或者在提交表單的js中設置一個變量作為標識,默認為false,表單提交之後就愛那個標識改為true

<script type="text/javascript">
var isCommitted = false;//表單是否已經提交標識,默認為false
function dosubmit(){
if(isCommitted==false){
isCommitted = true;//提交表單後,將表單是否已經提交標識設置為true
return true;//返回true

讓表單正常提交
}else{
return false;//返回false那麽表單將不提交
}
}
</script>

3、利用session解決。做法:在服務器端生成一個唯一的隨機標識號,專業術語:Token(令牌)。同時在當前用戶的Session中保存這個Token。然後將Token發送到客戶端的Form表單中在表單中使用隱藏域來存儲這個Token。表單提交的時候連同這個Token一起提交到服務器端。然後在服務器端判斷客戶端提交上來的Token與服務器生成的是否一樣。不一樣就是重復提交了,此時服務器就不可以處理重復提交的表單。處理完後清除當前用戶的

Session中存儲的標識號。

技術分享

防止表單的重復提交