我们正在.net MVC工作,并有一个表单来提交电子邮件请求。用户在非常不稳定的互联网连接上(在飞机上)声称尽管单击发送按钮一次,表单发布了6次,导致发送了6封电子邮件。我一直在环顾四周,但一直无法找到解释这种行为的方法。由于连接不稳定,是否有任何方式可以使已发布的表单多次提交?
答案 0 :(得分:2)
这实际上取决于实际的浏览器,但我还没有看到有人这样做(事实上,这样做会很危险,例如在某些在线订购服务的背景下)。
但是,这种事情很容易发生。有时人们不会发现多次点击,因为他们没有注意到第一次点击会触发任何内容。可能会发生浏览器没有立即显示任何加载操作/活动,特别是对于不稳定的连接。此外,由于某些硬件问题(鼠标按键损坏),可能会执行多次点击,尽管只点击一次。
为了确保,我只需在表单中添加一些最小的JavaScript代码:在提交时,禁用提交按钮,同时避免进一步尝试发送表单(拦截onsubmit
事件并返回{{ 1}}第一次;从那里开始总是返回true
)。
答案 1 :(得分:2)
我知道我迟到了回答,但我遇到了类似的问题,我相信问题出在浏览器上。我们使用AJAX将表单数据提交给控制器,并且处理需要花费大量时间,因为要处理的数据非常庞大。浏览器如Chrome,等待一段时间,如果他们没有收到回复,则假设请求丢失并自行发送另一个请求,这很可能是你的结果。请注意,同样的问题不会发生在像Firefox和IE浏览器。
我们为避免这种情况所做的是让方法异步工作并在该时间间隔内将响应返回给AJAX方法,以避免Chrome再次发出请求。
此link详细解释了同一问题。