2013-07-23 75 views
1

我們正在使用.net MVC並且有一個表單提交電子郵件請求。一位用戶的網絡連接非常不穩定(在飛機上),並聲稱儘管點擊了發送按鈕一次,表單發佈了6次,導致發送了6封電子郵件。我一直在環顧四周,但一直未能找到解釋這種行爲的方式。發佈表單由於點擊連接而多次提交,是否有任何方法?可以頁面多次悄悄發佈

回答

1

這真的取決於實際的瀏覽器,但我還沒有看到有人這樣做(事實上,這樣做會很危險,例如在一些在線訂購服務的情況下)。

但是,這樣的事情可能會不經意地發生。有時候人們並不知道多次點擊,因爲他們沒有注意到第一次點擊觸發任何事情。瀏覽器可能不會立即顯示任何加載操作/活動,尤其是在連接不穩定的情況下。此外,由於某些硬件問題(鼠標按鈕損壞),可能會執行多次點擊,儘管只需點擊一次即可。

可以肯定的是,我只需在表單中添加一些最低限度的JavaScript代碼:在提交時,禁用提交按鈕,並且還可以避免進一步嘗試發送表單(第一次攔截onsubmit事件並返回true;從那裏總是返回false)。

+0

謝謝你的洞察力。他們在Chrome上。從那以後,我們肯定會把客戶端和服務器端的保護放在一起;我只是想確保我知道整個畫面。 – cdutcher

2

我知道我遲到了,但我面臨類似的問題,我相信這個問題是與瀏覽器。我們使用AJAX將表單數據提交給控制器,處理需要很長時間,因爲要處理的數據非常龐大。像Chrome這樣的瀏覽器,等待一段時間,如果他們沒有收到響應,則假設請求丟失,並自行發送另一個請求,這很可能是您的情況。請注意,同樣的問題在瀏覽器中不會發生Firefox和IE。

我們爲避免這種情況所做的工作是讓該方法異步工作,並在該時間間隔內回覆AJAX方法,以避免Chrome再次發出請求。

這個link詳細解釋了同樣的問題。