Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止双重请求处理_Javascript_Html_Forms - Fatal编程技术网

Javascript 防止双重请求处理

Javascript 防止双重请求处理,javascript,html,forms,Javascript,Html,Forms,我正在与第三方支付服务合作,该服务在我的用户在他们的网站上进行支付后将其发送回我的网站。它使用javascript将用户发回(setTimeout和location='my_site.com?data'),但如果需要的时间太长,用户还可以单击一个按钮。当浏览器因为javascript已经在加载我的站点,并且用户单击按钮时,就会发生双重请求。 我可以防止请求被处理两次吗?还是我应该处理两次 现在,当同一请求被处理两次时,我会显示一个“请求已被处理”,但由于这两个请求几乎同时发生,用户永远看不到表明

我正在与第三方支付服务合作,该服务在我的用户在他们的网站上进行支付后将其发送回我的网站。它使用javascript将用户发回(
setTimeout
location='my_site.com?data'
),但如果需要的时间太长,用户还可以单击一个按钮。当浏览器因为javascript已经在加载我的站点,并且用户单击按钮时,就会发生双重请求。
我可以防止请求被处理两次吗?还是我应该处理两次


现在,当同一请求被处理两次时,我会显示一个“请求已被处理”,但由于这两个请求几乎同时发生,用户永远看不到表明请求已正确处理的页面。

理想情况下,应该在您的服务提供商处禁用该按钮,但是,否则您必须在您这边优雅地管理它…

理想情况下,该按钮应该在您的服务提供商处禁用,否则您必须在您这边优雅地管理它…

只需在调用
form.submit()之前禁用submit按钮即可:


只需在调用
form.submit()之前禁用submit按钮即可:


在这种情况下,您希望您的用户获得正确的反馈,并且从您所说的内容中,您知道他们目前失去了对第一个请求的响应

因此,您可能希望对任何后续请求(可能仅在特定时间范围内)检查事件是否已被处理。如果已经处理过,您可能希望检查处理是否一致(即两次数据是否相同,如果数据实际上不同,则进行适当处理)

如果一切都一样,你可以显示“正确处理”页面,无论是第一次、第二次还是第十次进入页面

处理这一问题的其他技术可能包括确保登录页返回速度更快。大概问题是,你这一方正在做相当多的工作,这导致他们放弃,也开始点击。如果您可以减少显示内容的时间,那么这可能会以更好的方式解决您的问题。这可能会涉及到一些事情,比如回复一个有你的网站品牌的小页面,并说“请稍候,我们正在处理你的订单”或其他什么。然后将控件放在手中,并允许您在开始时更智能地处理双击场景


确切的解决方案将取决于您的具体情况。

在这种情况下,您希望您的用户获得正确的反馈,并且从您所说的内容中,您知道他们目前失去了对第一个请求的响应

因此,您可能希望对任何后续请求(可能仅在特定时间范围内)检查事件是否已被处理。如果已经处理过,您可能希望检查处理是否一致(即两次数据是否相同,如果数据实际上不同,则进行适当处理)

如果一切都一样,你可以显示“正确处理”页面,无论是第一次、第二次还是第十次进入页面

处理这一问题的其他技术可能包括确保登录页返回速度更快。大概问题是,你这一方正在做相当多的工作,这导致他们放弃,也开始点击。如果您可以减少显示内容的时间,那么这可能会以更好的方式解决您的问题。这可能会涉及到一些事情,比如回复一个有你的网站品牌的小页面,并说“请稍候,我们正在处理你的订单”或其他什么。然后将控件放在手中,并允许您在开始时更智能地处理双击场景


确切的解决方案将取决于您的具体情况。

第三方正在生成超时和单击按钮(可能不是表单提交)。第三方正在生成超时和单击按钮(可能不是表单提交)。对于用户来说,“请求已成功处理”和“请求已被处理”(假设已处理的请求中未发生错误)。那么为什么要向用户显示这些不必要的信息呢?只要确保您的网站没有中断,用户就会得到所需的响应。对于用户,“请求已成功处理”和“请求已被处理”之间没有区别(假设在已经处理的请求中没有出现错误)。那么为什么要向用户显示这些不必要的信息呢?只要确保您的网站没有中断,用户就会得到所需的响应。我无法更改他们方面的任何内容,所以我无法删除或禁用按钮。我知道,这就是我写“理想”的原因我不能改变他们这边的任何东西,所以我不能移除或禁用按钮。我知道,这就是为什么我写了“理想”;-)我认为你的第一个选择,包括时间框架,是最合适的解决方案。我认为你的第一个选择,包括时间框架,是最合适的解决方案。
document.getElementById("submit").disabled=true;