我們的應用程序使用ASP.net MVC,我們對下面的場景會發生什麼有疑問。雙擊/重複點擊一個HTML按鈕
我們有一個「按鈕」進行付款,付款後我們有一個會話變量,將「PaymentSubmitted」標記爲True。這個會話變量將被用來根據它的值做不同的事情。
現在我想要你的輸入來決定如果用戶點擊兩次「按鈕」會發生什麼。
第二個請求(從第二次點擊完成按鈕生成)是否等待直到第一個請求被執行?或者第二個請求會繼續前進,而不必擔心第一個請求的位置。
注意:我們不使用任何客戶端腳本。
我們的應用程序使用ASP.net MVC,我們對下面的場景會發生什麼有疑問。雙擊/重複點擊一個HTML按鈕
我們有一個「按鈕」進行付款,付款後我們有一個會話變量,將「PaymentSubmitted」標記爲True。這個會話變量將被用來根據它的值做不同的事情。
現在我想要你的輸入來決定如果用戶點擊兩次「按鈕」會發生什麼。
第二個請求(從第二次點擊完成按鈕生成)是否等待直到第一個請求被執行?或者第二個請求會繼續前進,而不必擔心第一個請求的位置。
注意:我們不使用任何客戶端腳本。
我假設點擊按鈕是一個「提交」的表單。
一旦按鈕被點擊,第二個請求將被髮布。試想一下,您在任何給定頁面上的瀏覽器刷新了20次,這20個請求將被髮送到您的Web服務器,並將按照收到的順序進行處理。
如果您已經足夠早地設置了它,您應該能夠檢查隨後點擊的會話變量 - 但這確實是不安全的。
更好的方法是使用JavaScript或張貼到不同的頁面,以便在付款時不能再次點擊該按鈕。
感謝您的信息。正如我所提到的,我們不想使用客戶端腳本。 – JackMith
這將是可能的識別操作(產品購買或任何它被支付)?在這種情況下,您可以在第一次點擊後將操作標記爲「正在進行」。當你的服務器收到請求時,首先要檢查操作的狀態,如果「進行中」服務器不會啓動另一個事務。
在任何情況下都會有一些客戶端阻塞功能(禁用按鈕,帶有典型等待消息的模式窗口等),主要針對用戶,因此他們有反饋意見「繼續「。但是,當然不能只在阻塞功能中進行中繼,因爲任何客戶端都容易被改變。
我問過類似的問題,以前可能會幫助你:http://stackoverflow.com/questions/6408710/prevent-double-clicking-on-button – Curt
從我的經驗,它會等到第一個請求發生但一旦完成,它會發出另一個請求。 – Henry