[問題] 如何避免因網速造成資料重複傳送?
開發語言:asp.net C# Web form
開發工具:visual studio 2010
功能簡介:
資料表:
[USER]
| USER_SID | USER_ID | USER_NAME |
[VALUE]
| VALUE_SID | USER_ID | VALUE_VALUE | VALUE_DATE |
資料流程:
一個表格(grid view)
顯示欄位:
| USER_NAME (Label) | VALUE_VALUE (TextBox)|
隱藏欄位:
| USER_ID | VALUE_SID |
一個存檔鈕(Button),grid view以panel包著,
Default Button為存檔鈕,在下面TextBox按下Enter可以觸發存檔
存檔時將有VALUE_SID的作update處理,無的作INSERT處理
以List<string> 將grid view row迴圈取值並建立:
INSERT部分: USER_ID LIST、VALUE_VALUE LIST
UPDATE部分: VALUE_SID、VALUE_VALUE LIST
在後端進行迴圈新增或更新
更新成功或失敗,以Message box顯示結果
問題:
使用者測試後發現連續按下Enter送出時資料會重複,
經分析發現為Insert處理要求連續送出造成,
改在存檔鈕事件裡第一行disable存檔鈕
但仍因網速使得第一行都沒有執行,就再次送出
再改成以javascript鎖定按鈕,js為local端處理應該無問題
開發端環境測試蓄意按下多次enter也無法「突破」js鎖定存檔鈕
但交由使用者測試後仍然造成資料重複
想請問是否有防止這種狀況下重複送出的做法呢?
--
※ 文章網址: http://www.ptt.cc/bbs/Web_Design/M.1409213062.A.46A.html
推 pm2001: 每次產生頁面的時候作一個只能用一次的token 08/28 16:22
好像是個辦法,來研究一下
推
08/28 19:00, , 1F
08/28 19:00, 1F
→
08/28 19:00, , 2F
08/28 19:00, 2F
就...想不到問題在哪
整個畫面就是一個存檔鈕,以及PANEL內的default button(按下enter),
能夠觸發存檔事件的應該只有這個button的onclick event...
使用者網路環境好像是4M/1M,走VPN,
同時一個地方大概只有2~3人使用
→
08/28 19:13, , 3F
08/28 19:13, 3F
→
08/28 19:13, , 4F
08/28 19:13, 4F
→
08/28 19:14, , 5F
08/28 19:14, 5F
也是個方法,感謝回應
※ 編輯: ian90911 (182.235.161.52), 08/28/2014 20:05:47
→
09/05 23:41, , 6F
09/05 23:41, 6F