在登錄頁面html中寫如下代碼
<script type="text/javascript"> var issubmit=false; function dosubmit(){ if(issubmit==false){ issubmit=true; return true; }else{ return false; } } </script> </head> <body> <form action="/Day07/FormSubmit" method="get" onsubmit="return dosubmit()"> 用戶名:<input type="text" name="usrname"> <br><input type="submit" value="提交"> </form> </body>
重點是這個JS語句 定義了一個方法 共用一個Flag標記 進行驗證 如果已經提交過,就返回一個false給onsubmit這個數據
如果沒有提交過 將標記設置為true 並且返回一個ture 給onsubmit 讓其提交一次數據 這是js防止表單重復提交 應對的是傳輸數據
時網絡延時 而用戶多次提交數據 造成的問題
當然還有一種思路 可以設置提交按鈕在提交一次之后不可用 也就是變為灰色 那么該怎么做勒
<script type="text/javascript"> function dosubmit(){ var input=document.getElementById("submit"); input.disabled='diabled'; return ture; } </script> <form action="/Day07/FormSubmit" method="get" onsubmit="dosubmit()" ><!-- onsubmit="return dosubmit()" --> 用戶名:<input type="text" name="usrname"> <br><input id="submit" type="submit" value="提交"> </form>
當然這種方式只能做到提交 並且按鈕不可用 但是無法防止比如用戶修改提交頁面 或者用戶刷新 或者后退等重復操作
只能做到減少服務器接受數據並檢查的頻率 但是這樣依舊有利於減少服務器的工作量