您的位置:首页 > 其它

防止表单重复提交

2016-07-24 08:59 253 查看
防止表单重复提交的两种方法:

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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: