2011-11-30 102 views
0

我正在使用第三方支付服務,該服務會在用戶的網站上進行付款後將我的用戶發送回我的網站。它用javascript(setTimeoutlocation='my_site.com?data')向用戶返回,但如果用戶需要的時間太長,還可以點擊一個按鈕。當瀏覽器由於javascript而已經加載我的網站時發生雙重請求,並且用戶單擊按鈕。
我可以阻止請求被處理兩次嗎?或者我應該簡單地處理它兩次?防止重複請求處理

現在,當兩次處理同一個請求時,我顯示「請求已處理」,但由於兩個請求幾乎同時發生,用戶從不會看到說明請求被正確處理的頁面。

+2

對於用戶而言,「請求處理成功」和「請求已處理」之間沒有區別(假設已經處理的請求中沒有發生錯誤)。那麼爲什麼要向用戶展示這些不必要的信息。只要確保你的網站不會中斷,用戶就能得到想要的迴應。 – Gerben

回答

1

在這種情況下,您希望您的用戶得到正確的反饋,並從您所說的內容中知道他們目前失去了對第一個請求的回覆。

因此,您可能想要做的是爲任何後續請求(可能只在特定時間範圍內)檢查事件是否已被處理。如果已經處理過,則可能需要檢查處理是否一致(即數據兩次都是相同的,如果數據實際上不同,則處理得當)。

如果它們完全相同,則可以顯示「正確處理」頁面,無論是第一次還是第二次還是第十次訪問頁面。

處理此問題的其他技術可能包括確保您的着陸頁返回更快。據推測,問題在於你的一方正在做一些合理的工作,導致他們放棄並進行點擊。如果您可以減少顯示內容的時間,那麼這可能會以更好的方式解決您的問題。這可能涉及到一些東西,例如迴應一個有您的網站品牌的小頁面,並說「請等待我們處理您的訂單」或其他任何內容。然後將控制權交給您,讓您在開始時更智能地處理雙擊事件。

雖然確切的解決方案將取決於您的具體情況。

+0

我認爲你的第一個選擇,包括時間框架,是最合適的解決方案。 –

3

理想按鈕應該在您的服務提供商被禁用,否則你就必須優雅地管理它在你的身邊......

+0

我無法改變他們身邊的任何東西,所以我無法刪除或禁用按鈕。 –

+0

我知道,這就是爲什麼我寫「理想」;-) – Leon

1

只是禁用調用form.submit()之前提交按鈕:

document.getElementById("submit").disabled=true; 
+1

第三方正在產生超時和按鈕點擊(這可能不是一個表單提交)。 – Chris