我正在使用第三方付款服务,该服务在我们的网站上付款后将我的用户发回我的网站。它会向用户发回javascript(setTimeout
和location='my_site.com?data'
),但如果用户花了很长时间,也可以点击该按钮。当浏览器因为javascript而加载我的网站时,会发生双重请求,用户点击该按钮
我可以阻止请求被处理两次吗?或者我应该简单地处理两次?
现在,我显示一个"请求已经处理好了#34;当同一个请求被处理两次,但由于这两个请求同时发生时,用户永远不会看到表示请求被正确处理的页面。
答案 0 :(得分:3)
理想情况下,应该在您的服务提供商处禁用该按钮,否则您必须优雅地管理它... ...
答案 1 :(得分:1)
只需在致电form.submit()
之前停用提交按钮:
document.getElementById("submit").disabled=true;
答案 2 :(得分:1)
在这种情况下,您希望您的用户获得正确的反馈,并且从您所说的内容中您知道他们当前会丢失对第一个请求的回复。
因此,您可能想要做的是针对任何后续请求(可能仅在特定时间范围内)检查事件是否已经处理过。如果已经处理过,您可能需要检查处理是否一致(即数据是两次都相同并且如果数据实际上不同则适当处理)。
如果完全相同,您可以显示“正确处理”页面,无论是第一次,第二次还是第十次进入页面。
处理此问题的其他技巧可能包括确保您的目标网页返回更快。据推测,问题在于,正在做出合理的工作量,这会导致他们放弃并进行点击。如果您可以缩短显示内容的时间,那么可以稍微更好地解决您的问题。这可能涉及一些事情,例如退回一个包含您网站品牌的小页面,并说“请等待我们处理您的订单”或其他任何内容。然后将控件放在您的手中,让您在开始时更智能地处理双击场景。
确切的解决方案将取决于您的确切情况。