我们正在使用 .net MVC 并有一个表单来提交电子邮件请求。一位用户在非常不稳定的互联网连接上(在飞机上)并声称尽管单击了一次发送按钮,但表单发布了 6 次,导致发送了 6 封电子邮件。我一直在环顾四周,但无法找到解释这种行为的方法。由于不稳定的连接,是否有任何方法可以让已发布的表单多次提交?
问问题
82 次
2 回答
2
这实际上取决于实际的浏览器,但我还没有看到有人这样做(事实上,这样做会很危险,例如在某些在线订购服务的情况下)。
然而,这样的事情很容易偶然发生。有时人们并没有意识到多次点击,因为他们没有注意到第一次点击会触发任何事情。浏览器可能不会立即显示任何加载操作/活动,尤其是在连接不稳定的情况下。此外,由于某些硬件问题(鼠标按钮损坏),可能会执行多次单击,尽管只单击一次。
可以肯定的是,我只需在表单中添加一些最小的 JavaScript 代码:在提交时,禁用提交按钮并避免进一步尝试发送表单(拦截onsubmit
事件并true
第一次返回;从那里总是返回false
) .
于 2013-07-23T20:14:13.903 回答
2
我知道我回答迟了,但我遇到了类似的问题,我相信问题出在浏览器上。我们使用 AJAX 向控制器提交表单数据,由于要处理的数据很大,因此处理需要很长时间。像 Chrome 这样的浏览器,等待一段时间,如果他们没有收到响应,则假设请求丢失并自行发送另一个请求,这很可能是您的情况。请注意,同样的问题不会发生在像这样的浏览器中火狐和 IE。
我们为避免这种情况所做的就是让该方法异步工作,并在该时间间隔内将响应返回给 AJAX 方法,以避免 Chrome 再次发出请求。
此链接详细解释了相同的问题。
于 2017-09-21T19:37:09.210 回答