我正在做在线出租车预订服务,
一旦用户成功完成了他的旅程,
我们正在显示感谢预订,我们会显示预订ID,有些人会点击F5
键,所以页面刷新并插入新条目
所以我想在我的cashthankyou你页面上停用F%,
由于 Bharanikumar
答案 0 :(得分:13)
你不会有太多运气 - 按键的控制/检测严重依赖于浏览器,并且通常不可能超越标准行为。
您需要检测并正确处理重复的表单提交,而不是这种方法:
答案 1 :(得分:5)
最好的选择通常是找到一种不涉及篡改浏览器功能的方法。在您的情况下,这将使用户将预订提交到插入条目的页面,然后将用户重定向到一个只做显示的用户页面。然后,用户可以在任何时间刷新页面,而不会发生任何危险。
答案 2 :(得分:2)
你做不到。这是浏览器的编码方式,您无法从网页中禁用它。
您需要重新构建应用程序以识别此类刷新,而不是创建其他记录。
这样做的一种方法是检查几秒钟前是否为用户输入了记录,如果是这种情况,则不插入新记录。
另一种方法是添加一个插页式页面进行添加,然后重定向到您的确认页面(此页面只是一个显示页面,刷新它不会做任何事情)。
答案 3 :(得分:1)
我不知道你是否可以禁用F5,但可以显示某种“你确定”的消息。
这可以使用在窗口重新加载或关闭之前调用的 window.onbeforeunload 来完成。
答案 4 :(得分:1)
他们刷新页面可能有几个原因。 Maye他们使用他们的后退按钮,双击你的提交按钮或其他任何加载两次的东西。
以下是您问题的两个真正解决方案:
1)输入带有随机数的表格字段,将此号码与预订一起保存,如果已经预订了该值,请在您的预订表中查看。这将阻止他们两次发送表格。
2)在上次完成预订时保存一张饼干。检查此值,不允许新的预订,即五分钟。
答案 5 :(得分:1)
另一种方法是将用户重定向到感谢页面,从会话中加载ID。
这样,当用户点击F5时,将加载感谢页面,并且不会再次尝试提交表单。
如果加载了感谢页面时,会话中没有预订ID,请重定向回主页或合适的错误页面。