2013-07-23 80 views
1

我们正在使用.net MVC并且有一个表单提交电子邮件请求。一位用户的网络连接非常不稳定(在飞机上),并声称尽管点击了发送按钮一次,表单发布了6次,导致发送了6封电子邮件。我一直在环顾四周,但一直未能找到解释这种行为的方式。发布表单由于点击连接而多次提交,是否有任何方法?可以页面多次悄悄发布

回答

1

这真的取决于实际的浏览器,但我还没有看到有人这样做(事实上,这样做会很危险,例如在一些在线订购服务的情况下)。

但是,这样的事情可能会不经意地发生。有时候人们并不知道多次点击,因为他们没有注意到第一次点击触发任何事情。浏览器可能不会立即显示任何加载操作/活动,尤其是在连接不稳定的情况下。此外,由于某些硬件问题(鼠标按钮损坏),可能会执行多次点击,尽管只需点击一次即可。

可以肯定的是,我只需在表单中添加一些最低限度的JavaScript代码:在提交时,禁用提交按钮,并且还可以避免进一步尝试发送表单(第一次拦截onsubmit事件并返回true;从那里总是返回false)。

+0

谢谢你的洞察力。他们在Chrome上。从那以后,我们肯定会把客户端和服务器端的保护放在一起;我只是想确保我知道整个画面。 – cdutcher

2

我知道我迟到了,但我面临类似的问题,我相信这个问题是与浏览器。我们使用AJAX将表单数据提交给控制器,处理需要很长时间,因为要处理的数据非常庞大。像Chrome这样的浏览器,等待一段时间,如果他们没有收到响应,则假设请求丢失,并自行发送另一个请求,这很可能是您的情况。请注意,同样的问题在浏览器中不会发生Firefox和IE。

我们为避免这种情况所做的工作是让该方法异步工作,并在该时间间隔内回复AJAX方法,以避免Chrome再次发出请求。

这个link详细解释了同样的问题。