我有一个处理付款的表单,但每300次付款中大约有一次付款,但我的日志显示有两次请求所有这些事件。
我实现了一些JavaScript,它在点击后禁用了提交按钮,它似乎对我来说很好,但我仍然会不时地提交双重提交。
有没有人知道可能导致表单提交两次的其他内容?
答案 0 :(得分:4)
正如Dagon所说,服务器端检查是你的朋友。为表单的每个实例提供一个随机生成的密钥(guid会很好),并将其存储在数据库中。不接受包含db中已存在的密钥的表单。
另外,您是否只是在表单处理逻辑执行后显示HTML?如果是这样,请在处理表单后尝试重定向。
答案 1 :(得分:1)
这是一种方式:用户按下表单提交按钮后,用javascript禁用它。这应该可以防止用户意外地双重提交表单。它适用于我们实现它的所有站点,因为它。因为有时用户会不耐烦并且多次点击表单提交按钮,这就是为什么你会得到双重请求。你需要确保它适用于所有浏览器(禁用我的意思)。
你也可以在服务器端做这件事,它就更难了。
我们使用类似于Enable/disable submit button with jQuery and Coldfusion server code
中的upvoted答案