防止表单重复提交
2016-07-24 08:59
253 查看
防止表单重复提交的两种方法:
1、前台js验证
2、后台action中验证(后台声明一个List,前台声明一个变量并传递到后台,后台list检测是否有这个变量,有的话就是正在执行中,没有的话就添加进去,告诉后来的请求正在执行中,后台返回给前台值后,清除本次请求,前台同时修改变量值)
在表单中加上<input type="hidden" name="token" id="token" >
1、前台js验证
var postval=0; function saveForm(){ if(postval==1){return;}//如果正在提交,就返回 postval=1;//执行方法后,告诉变量正在提交中 $('#form1').form('submit',{ url: url, onSubmit: function(){ return $(this).form('validate'); }, success: function(result){ postval=0;//接受返回值成功后,告诉变量执行完成,可以再次提交 } }); }
2、后台action中验证(后台声明一个List,前台声明一个变量并传递到后台,后台list检测是否有这个变量,有的话就是正在执行中,没有的话就添加进去,告诉后来的请求正在执行中,后台返回给前台值后,清除本次请求,前台同时修改变量值)
在表单中加上<input type="hidden" name="token" id="token" >
var token = new Date().getTime(); var postval=0; function saveForm(){ if(postval==1){return;}//如果正在提交,就返回 postval=1;//执行方法后,告诉变量正在提交中 $("#token").val(token); $('#form1').form('submit',{ url: url, onSubmit: function(){ return $(this).form('validate'); }, success: function(result){ postval=0;//接受返回值成功后,告诉变量执行完成,可以再次提交 token = new Date().getTime(); } }); }
private List<String> list = new ArrayList<String>(); @RequestMapping(value = "/posta", produces = "text/html;charset=UTF-8") public @ResponseBody String posta(HttpServletRequest req) { EasyUiFormResult efr = null; String token = req.getParameter("token"); if(!list.contains(token)){ list.add(token); } else { efr = new EasyUiFormResult("500", "操作失败,服务器正在处理,请勿重复提交!"); String jsonString = JSON.toJSONString(efr); return jsonString; } list.remove(token);//操作成功,清除变量值 efr = new EasyUiFormResult("200", "操作成功!"); String jsonString = JSON.toJSONString(efr); return jsonString; }
相关文章推荐
- c++
- Prime Ring Problem
- 【VS开发】免费打工仔:一个完善的ActiveX Web控件教程
- hdu 1112
- AT24C512与AT24C512B的区别
- POJ 3620 Avoid The Lakes(DFS)
- N皇后
- 让键盘不占空间和关闭软键盘的方法
- 【图像处理】ISP 图像传感器camera原理
- 前端基础问题整理-JavaScript相关(一)
- Python 3.4 链接mysql5.7 数据库使用方法
- mysql字符串拼接,存储过程
- netstat命令详解
- Java TCP客户端服务器端交互
- Android高效加载图片和缓存策略LRU,DiskLRU
- MySql使用(1)
- 【VS开发】VC实现程序重启的做法
- IO —— 对象序列化与反序列化
- 基础1
- POJ 2785 upper_bound找到上界和下界