javascript - 如何組織form重複提交

來源:互聯網
上載者:User
關鍵字 javascript java php node.js

背景:
今天被測試提了一個bug,很納悶,因為這個bug是:沒有禁止表單重複提交。頓時感覺form表單真是無處不在。

一般我們不做重複提交的處理,有些地方會使用js禁止提交按鈕的方式,但也僅限於通過js提交的表單。

於是各種百度,有說使用session做標記的,根據標記來判斷是否第一次提交,但想想這種方式對後端來說比較複雜,而且session也比較貴。

今天測試提的bug頓時讓我毫無頭緒了,因為這個表單是同步提交的,根本沒有js參與。更不可能為所有的同步表單都寫一套js。

那麼,面對同步提交表單的這種情況,大家是如何解決重複提交問題的呢?
提出你的錦囊妙計吧!

回複內容:

背景:
今天被測試提了一個bug,很納悶,因為這個bug是:沒有禁止表單重複提交。頓時感覺form表單真是無處不在。

一般我們不做重複提交的處理,有些地方會使用js禁止提交按鈕的方式,但也僅限於通過js提交的表單。

於是各種百度,有說使用session做標記的,根據標記來判斷是否第一次提交,但想想這種方式對後端來說比較複雜,而且session也比較貴。

今天測試提的bug頓時讓我毫無頭緒了,因為這個表單是同步提交的,根本沒有js參與。更不可能為所有的同步表單都寫一套js。

那麼,面對同步提交表單的這種情況,大家是如何解決重複提交問題的呢?
提出你的錦囊妙計吧!

onclick="this.disabled=true" 這麼簡單的一句代碼用的著寫一套???

對於前端來說, 防止重複提交是必須做的...
當然後端視情況要不要加, 因為前端只能防止使用者手動多次點擊, 但是沒有辦法阻止類比請求

session設個到期時間,利用資料庫唯一性(提交了是插到資料庫嗎),提交了本地存個cookie,第二次提交判斷下有木有

一個結果,n種方法。
session(或者cookie)雖然比較貴但也可以說是比較節省的,畢竟其他方法還要進行新的模組調用(cache,db)
session_id就可以判斷啊。

我支援禁用提交。其實並不複雜,提取出一個公用邏輯即可,並不需要對每個表單獨寫一套。

防止重複提交,說到底就是防止一個邏輯執行多次。然而要求後端完全等冪是不可能的,create操作就是個反例。因此更好的實踐便是從前端入手。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.