Ale*_*rto 12 html browser error-handling postback double-click
背景:我们正在编写注册/支付页面,我们的理念是首先在服务器端编写所有验证和错误检查,然后添加客户端验证作为第二步(非阻塞性jQuery).
我们想要禁用双击服务器端,因此我们编写了一些锁定的,线程安全的代码来处理同时发布/竞争条件.当我们试图测试这个时,我们意识到我们不能同时发生后期或竞争条件.
我认为(无论如何在旧浏览器中)双击提交按钮的工作原理如下:
- 用户双击提交按钮.
- 浏览器在第一次点击时发送帖子
- 在第二次单击时,浏览器取消/忽略初始帖子,并启动第二个帖子(在第一个帖子返回响应之前).
- 浏览器等待第二个帖子返回,忽略初始帖子响应.
我认为从服务器端看起来像这样:服务器获得两个同时发布的请求,执行并响应它们两者(不知道没有人正在收听第一个响应).
从我们的测试(FireFox 3.0,IE 8.0),这是实际发生的事情:
- 用户双击提交按钮
- 浏览器发送第一次点击的帖子
- 浏览器排队第二次单击,但等待第一次单击时的响应.
- 响应从第一次单击返回(响应被忽略?).
- 浏览器发送第二次点击的帖子.
因此,从服务器端:服务器接收它执行并响应的单个帖子.然后,服务器接收它执行并响应的第二个请求.
我的问题是,这总是以这种方式工作(而我正在失去理智)?或者这是现代浏览器中的一项新功能,可防止将同时发送到服务器?
似乎对于服务器端双击预防,我们不必担心同时发布的帖子或竞争条件.只需要担心排队的帖子.
提前感谢任何反馈/意见.
亚历克斯
| 归档时间: |
|
| 查看次数: |
964 次 |
| 最近记录: |