用户在提交后进行页面刷新会有问题吗?

Can a user doing a page refresh after a submit be a problem?

本文关键字:刷新 有问题 提交 用户      更新时间:2023-09-26

终端用户经常被告知不要点击两次提交按钮,让交易完成;而且,有不同的技术用于解决这种情况。

最近,有人问我,"你怎么处理用户在提交后刷新页面的情况",暗示这会导致重复提交或其他问题。

你能让我知道这是一个需要处理的问题吗?情况是什么以及如何最好地解决它,如果有的话。

解决这个问题的最好方法是使用Post/Redirect/Get模式。

是的,这是一个真正的问题,除非你自己处理。在实践中,在大多数浏览器上,当用户点击刷新时,数据被重新提交,如果你在服务器端不检查这一点,它将导致你采取相同的动作两次(例如,信用卡两次收费,重复论坛帖子等)。

处理这个问题的方法是检查用户以前是否发表过文章。例如,如果你正在建立一个论坛,你会发送一个隐藏的变量与唯一的ID与帖子。在解析发布的数据时,将这个唯一ID保存到数据库中。如果您遇到一个具有唯一ID的帖子已经保存,那么您知道您正在查看客户端的"刷新",并且您可以简单地忽略该帖子。

希望这对你有帮助!

如果您的用户如此倾向于做页面刷新,这听起来像是您的服务花费方式太长时间来响应。在提交时禁用提交按钮,并显示某种加载指示,直到响应返回。

或者,立即在服务器上响应,并将操作排队等待。例如,Linode对服务器行为进行队列处理,而不是在"请求调整分区大小"时立即运行。您可以将此方法推广到其他行为,甚至可以使用ajax显示进度指示器等内容。

是的,这可能是一个问题(实际上是一个问题在很多网站)。但我认为这是一个与服务器端相关的问题,而不是Javascript。最佳实践是使用Post/Redirect/Get模式(因为你是在询问提交后的刷新)。

是的,这是一个真正的问题,但我相信这通常是由浏览器处理。例如,Chrome会在页面刷新时通知你,如果有数据被发布到服务器,并给你继续或中止的选项。

编辑:

实际上……仔细想想,我在工作中确实需要处理这个问题。我最后做的是在页面上创建一个阴影框,直到整个过程完成

  1. 给出过程正在工作的视觉反馈和
  2. 阻止任何其他用户操作。

"如何处理用户提交后刷新页面的情况"

在表单成功提交后,您应该重定向到该页面。

这将防止用户再次提交数据,并防止浏览器发出烦人的警告,说数据将再次提交。