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

Javascript 停止刷新以重新提交表单,javascript,html,perl,cgi,Javascript,Html,Perl,Cgi,我做了研究,发现了这个页面: 我更愿意避免使用Post重定向Get模式,而是在第一次提交表单时对表单进行一些变量更改。然而,我不知道该怎么做,因为当你点击“刷新”时,你的想法是你正在重新提交你刚刚提交的表单。有什么建议吗?这通常通过POST请求后的重定向来处理。单击“上一步”将再次重定向用户。我知道你提到你想避免这种情况,但我看不出任何有效的理由。这通常是通过POST请求后的重定向来处理的。单击“上一步”将再次重定向用户。我知道您提到要避免这种情况,但我看不出任何有效的原因。在隐藏字段中随表单

我做了研究,发现了这个页面:


我更愿意避免使用Post重定向Get模式,而是在第一次提交表单时对表单进行一些变量更改。然而,我不知道该怎么做,因为当你点击“刷新”时,你的想法是你正在重新提交你刚刚提交的表单。有什么建议吗?

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

这通常是通过POST请求后的重定向来处理的。单击“上一步”将再次重定向用户。我知道您提到要避免这种情况,但我看不出任何有效的原因。

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

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

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

要防止意外影响,您必须:

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

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

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

要防止意外影响,您必须:

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

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

为什么要避免post/redirect/get?这是正确的解决方案。+1这是我知道的唯一解决方案。您为什么要避免Post/Redirect/Get?这是正确的解决方案。+1这是我唯一知道的解决方案,也不缓存提交的结果并在您获得已看到的UUID时返回缓存的内容,或者缓存提交的结果并在您获得已看到的UUID时返回缓存的内容在解释方面做得很好!给了我大量的洞察力,并将我从在节点中执行
渲染
,变成了一个简单的重定向,在解释上做得很好!给了我大量的洞察力,并将我从在节点中执行
渲染更改为简单的重定向