我做我的研究,發現這個頁面:停止刷新,從重新提交表單
How do I stop the Back and Refresh buttons from resubmitting my form?
我寧願如果我能避免使用後重定向消息獲取模式,而不是在形式的一些變量的變化當我第一次提交時。但是,我不知道這將如何完成,因爲當您刷新時,您的想法是重新提交剛剛提交的表單。有什麼建議麼?
我做我的研究,發現這個頁面:停止刷新,從重新提交表單
How do I stop the Back and Refresh buttons from resubmitting my form?
我寧願如果我能避免使用後重定向消息獲取模式,而不是在形式的一些變量的變化當我第一次提交時。但是,我不知道這將如何完成,因爲當您刷新時,您的想法是重新提交剛剛提交的表單。有什麼建議麼?
這通常通過POST請求後的重定向來處理。點擊返回將重新將用戶重定向。我知道你提到你想避免這種情況,但我看不到任何有效的原因。
使用表單在隱藏字段中發送唯一表單標識符,例如UUID。跟蹤您已經看到的UUID(可能是每個會話,因此您的數據庫不會無限增長或需要偶爾修剪)並默默忽略重新提交。
或緩存提交結果並返回當您獲得已經看到的uuid時緩存的內容 – ysth
當瀏覽器被告知刷新時,它會重新發送它發送的最後一個請求。如果最後發送的請求是表單提交,那麼表單將被重新提交。這是沒有辦法的,因爲這就是模型的工作原理。
以避免意外的效果,你必須要麼:
我不是意識到任何其他選擇,並且鑑於「更新」的作用方式,我真的不知道還有其他方法。在這兩種選擇中,post-redirect-get提供了最清晰的用戶體驗,並且是HTTP動詞在理論上最「純」的用法,所以它通常是首選,而IMO是正確的解決方案。
解釋得很好!給了我很多見解,並將我從節點中的「渲染」轉變爲簡單的重定向 – David
你爲什麼要避免Post/Redirect/Get?這是正確的解決方案。 – thirtydot
+1這是我知道的唯一解決方案 –