首页 新闻 赞助 找找看

防止重复提交

0
悬赏园豆:20 [已关闭问题] 关闭于 2014-07-16 17:14

大家都用的什么办法,比较靠谱点,求教。

清海扬波的主页 清海扬波 | 小虾三级 | 园豆:825
提问于:2014-07-15 13:25
< >
分享
所有回答(6)
0

点了提交按钮并且通过验证时,直接把按钮置灰。JS方案

 

还有就看你表单上是否有验证码?提交成功了,后台把验证码的值换掉,要是重复提交,验证码会验证出来!

Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-07-15 13:38

因为是做的单据,所以没办法用验证码,暂时只想到在页面定义一个object,然后在保存的时候lock起来,在lock里面判断按钮是否可用,如不可用则return,可用则先禁用,再处理后续,这样即便重复提交了,在第二次保存的时候,按钮已经是不可用了,所以会return。暂时就想到这样的

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-07-15 13:55

@清海扬波: 可以的。

支持(0) 反对(0) Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-07-15 14:08

@Alex_QY1987: object必须设置为static才能锁得住,不然锁不住,但是设置为static之后,所有的客户端都得受这个object控制了吧,那都得排队处理了。/

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-07-15 15:07

@清海扬波: ???你是在后台操作???直接在页面定义一个JS变量控制不行么???

支持(0) 反对(0) Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-07-15 15:23

@Alex_QY1987: 是的,后台用static的object都锁不住,不知道是不是postback之后这个object都重新初始化了。页面js不行,业务上实现不了这个效果。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-07-15 15:27

@清海扬波: JS为什么实现不了?你在点击按钮的时候,当页面所有的验证都通过,在执行form的post之前把提交按钮给变灰,这样用户就不能再点击了,不就防止了重复提交了么?

我们的项目里就这么干呢!

支持(0) 反对(0) Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-07-15 15:30

@Alex_QY1987: 这样确实能实现按钮变灰,但是变灰之后,就不在响应服务器事件了,按钮事件就没了。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-07-15 15:33
0

c/s 将按钮灰掉,b/s 在前端js加一个全局标志。

leerh | 园豆:207 (菜鸟二级) | 2014-07-15 13:55

因为不是纯静态页面,用js实现不了。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-07-15 13:56
0

提交成功了,就跳轉到其他頁面。

会飞的金鱼 | 园豆:881 (小虾三级) | 2014-07-15 13:59

一个页面一个功能模块,不能跳转的。保存之后除了按钮状态有变化,其他都没变化。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-07-15 14:02

@清海扬波: 可以跳到前一頁。

如果還不行的話,查詢該業務數據是否在表中是否已存在,存在則提示不能再保存;不存在則可以保存。

總之需要一個標誌來判斷是否保存。

支持(0) 反对(0) 会飞的金鱼 | 园豆:881 (小虾三级) | 2014-07-15 14:11

@会飞的金鱼: 因为数据业务太多,在数据库处理不方便,暂时先用1楼那个办法试试。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-07-15 14:15
0

点击后禁用按钮啊

刘宏玺 | 园豆:14020 (专家六级) | 2014-07-15 15:29

禁用之后服务器事件就会不再触发

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-07-15 15:45

@清海扬波: 这样就防止重复提交了啊

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2014-07-15 17:59

@刘宏玺: 这样就防止重复了,但是提交不了了。

最后找到办法了,再加个postback提交就好了。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-07-16 17:14
0

看到对3楼的回复,我在想你是用asp或是asp.net的吧?

angelshelter | 园豆:9887 (大侠五级) | 2014-07-15 16:33

是的,asp.net

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2014-07-16 17:14
0

你不想禁用的话那就在提交之后更改按钮的状态值,随便找一个没有的属性里面存状态值,或者干脆把状态值存到一个隐藏域里面,提交的时候判断这个状态值不就行了吗?根据你的业务需求,不同的状态值做不同的业务处理。

晓菜鸟 | 园豆:2594 (老鸟四级) | 2014-07-16 08:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册