Javascript 用户在提交后进行页面刷新会是一个问题吗?

Javascript 用户在提交后进行页面刷新会是一个问题吗?,javascript,html,Javascript,Html,终端用户通常被告知不要点击提交按钮两次,这样交易就可以完成;而且,有不同的技术用于解决这种情况 不过,最近有人问我,“如果用户在提交后进行页面刷新,您该如何处理这种情况”,这意味着这将导致双重提交或其他问题 你能让我知道这是否是一个真正的问题,需要处理。。。情况是什么以及如何最好地解决它(如果有的话)。是的,这是一个真正的问题,但我相信这通常由浏览器来处理。例如,Chrome会在页面刷新时通知您是否会因此将数据发布到服务器,并为您提供继续或中止的选项 编辑: 实际上。。。想想看,我在工作中确实不

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

不过,最近有人问我,“如果用户在提交后进行页面刷新,您该如何处理这种情况”,这意味着这将导致双重提交或其他问题


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

是的,这是一个真正的问题,但我相信这通常由浏览器来处理。例如,Chrome会在页面刷新时通知您是否会因此将数据发布到服务器,并为您提供继续或中止的选项

编辑:

实际上。。。想想看,我在工作中确实不得不处理这件事。我最后做的是在页面上创建一个阴影框,直到整个过程完成

  • 提供可视反馈,说明该流程正在运行,并且
  • 防止任何其他用户操作
  • “如何处理用户在提交后刷新页面的情况?”

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


    这将防止用户再次提交数据,并防止浏览器发出警告,表示将再次提交数据。

    如果您的用户如此倾向于进行页面刷新,听起来您的服务需要很长时间才能响应。禁用submit上的submit按钮,并显示某种加载指示器,直到返回响应


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

    解决此问题的最佳方法是使用。

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

    处理这个问题的方法是检查用户以前是否发过帖子。例如,如果你正在构建一个论坛,你会在帖子中发送一个带有唯一ID的隐藏变量。在解析发布的数据时,您将此唯一ID保存到数据库中。如果您遇到一篇具有唯一ID且已保存的帖子,您知道您正在客户端查看“刷新”,您只需忽略该帖子即可

    希望这有帮助

    是的,这可能是个问题(实际上在很多网站上也是个问题)。 但我认为这更像是一个与服务器端相关的问题,而不是Javascript。
    最佳做法是使用模式(因为您要求提交后刷新)。

    如果用户刷新表单提交,大多数浏览器都会警告用户。这可能会导致重复发布、重复上传等问题。您可以做的是在初始提交时附加时间戳,在验证任何提交过程时,检查该用户是否最近通过IP引用或登录引用提交了表单,比如在最后一小时(3600秒)内。如果是这样,请忽略新提交并显示错误或重定向(以您喜欢的为准)。如果这回答了你的问题,如果需要,我可以举个例子。太棒了,乔,我想你得到了确切的问题/解决方案。乔,你看到贝特里斯的解决方案了吗?你的想法?或者任何一页。重定向是最重要的部分,被认为是最佳实践。。。我认为社区会同意的。:)哦,那么我说+1:)谢谢约瑟夫——我不太明白。。。如果提交速度很慢,那么问题就出在他们被重定向到另一个页面之前,他们通过刷新来加快速度。这里有没有一种独立于浏览器的方式来做任何事情?那个问我这个问题的家伙,肯定暗示有(事实上,这是我的一个面试问题:-)。@Ray K那么在这种情况下,我编辑的答案听起来像你需要的。您可以告诉面试官,您将禁用任何进一步的编辑,并给出某种指示,表明该过程仍在运行(例如阴影框)。不过,Joseph--听起来这不会阻止用户访问刷新按钮。你看到其他答案了吗?还有对我问题的评论?贝特瑞,谢谢。这听起来很简单。有什么特殊情况需要注意吗?看起来Joe(在对我的问题的评论中)使用了类似的解决方案。想法/评论。谢谢你,还有其他的情况你也需要考虑。例如,人们可能会点击“后退按钮”。如果你在做文章,他们会得到提示,但如果你在做“获取”,可能会导致很多问题。例如,假设您有一个通过GET的“切换”。用户点击切换按钮,继续进入新页面,然后点击“返回”。这将再次影响您的切换功能,用户甚至可能不会注意到。同样的解决方案也适用于使用ID来确保不重做事情。很高兴你发现我的回答很有帮助!所以,如果我对你的理解是正确的,那么在帖子中一个是“好的”。我没有在一个GET上得到“切换”。。你能举一个“切换”的例子吗。感谢你所有的见解。。。非常有用/有趣。不,在这两种情况下你都不安全。你需要仔细考虑一下。切换示例是一个用户标记/取消标记一篇文章,您可以通过发送文章id并通过GET“toggle”来处理这个问题,例如myscript.php?post_id={number}&toggle_flagmat-感谢您提供了解释这个问题的参考。我还在消化。你有没有看到比特里是一个