首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止刷新以重新提交表单

停止刷新以重新提交表单
EN

Stack Overflow用户
提问于 2011-08-25 23:31:37
回答 3查看 3.3K关注 0票数 0

我做了调查,找到了这个页面:

How do I stop the Back and Refresh buttons from resubmitting my form?

我希望我可以避免使用Post-Redirect-Get模式,而是在第一次提交表单时对表单进行一些变量更改。然而,我不知道如何做到这一点,因为当你点击刷新时,你的想法是你重新提交了你刚刚提交的表单。有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2011-08-25 23:34:00

这通常通过POST请求后的重定向来处理。单击back将再次将用户重定向到别处。我知道你提到过你想避免这种情况,但我看不出有任何合理的理由。

票数 3
EN

Stack Overflow用户

发布于 2011-08-26 16:10:54

当浏览器被告知要刷新时,它会重新发送它发送的最后一个请求。如果发送的最后一个请求是表单提交,则将重新提交该表单。这是没有办法的,因为这就是模型的工作方式。

要防止意外影响,您必须执行以下任一操作:

  • 使用post-redirect-get,这样最后一个请求(被重新发送的请求)将读取表单提交的结果,而不是表单提交本身,或者
  • 在表单中放置一个标识符,以便服务器可以忽略重新提交(尽管用户仍然会看到“您想要重新提交吗?”确认)

我不知道有没有其他选择,而且,考虑到“刷新”的工作方式,我真的看不出还有什么其他选择。在这两种选择中,post-redirect-get提供了最干净的用户体验,并且在理论上是HTTP动词最“纯粹”的使用,因此它通常是首选的,而且是正确的解决方案。

票数 2
EN

Stack Overflow用户

发布于 2011-08-25 23:49:45

在隐藏字段中随表单发送唯一的表单标识符,如UUID。跟踪您已经看到的UUID(可能是每个会话,这样您的数据库就不会无限制地增长或需要偶尔修剪),并默默地忽略重新提交。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7193113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档