12 回答
TA贡献1827条经验 获得超9个赞
提交订单就保存到系统,然后查出订单显示详情,下面显示确认按钮,确认后显示去支付的页面
这样直接从设计角度防止重复提交,就算提交订单那一步重复了,确认的订单绝对是存在的
PS: 不建议直接修改按钮disable状态, 因为有些时候莫名还是能点的。
最好直接显示一个层,禁止事件冒泡, 层遮住整个页面。 和禁用状态一起用更保险
TA贡献1828条经验 获得超3个赞
我的订单处理方式都是和验证码一个道理,以jquery+ajax+php提交为例;
前端:发起请求,附上提交页的一次性token, 点击之前判断特征比如data('id',1)的时候,存在则说明正在请求中,禁止请求.
后端:收到新订单的时候验证token并将订单表锁行,直到回调给前端时释放.
这样你无论在瞬间请求多少次,我后端只处理一次.
重要的一点是无论后端加强逻辑,而不是前端下功夫,如果不慎重复点击就能造成提交重复,肯定是后端逻辑有问题.前端不过是用户操作的一个展示.
TA贡献1831条经验 获得超10个赞
我现在的平台也有此类的问题,一般都是用户点击的时候重复,瞬间的事情,很难鉴定的,我现在用的最简单粗暴,只要提交了,就按钮灰掉或者跳转,不等到服务器给出反馈。希望你有好的方案后能分享下。
TA贡献1864条经验 获得超6个赞
这个问题不要通过纯前端的方式去解决吧!看数据库里面的记录基本都是同时提交的,题主也说公司N多人一次测试也未能重现。
解决方案:让请求“幂等”。 简单来说在付款的页面提前获得一个下单的token,每个token只能提交一次订单,以同样的token创建订单不会成功。
TA贡献1803条经验 获得超3个赞
最后的解决办法是,
- 前端限制
前端的按钮需要一点就改变,我用的是替换为另一个没有点击事件的按钮防止再点击。
2.后端限制
匹配查询上一张间隔是否相差15秒内,如果15秒内禁止重复提交订单。有效防止短时间内多单提交。
- 12 回答
- 0 关注
- 1584 浏览
添加回答
举报