我们知道很多种防止表单重复提交的方法:
总结开来一共有以下三种:
1、前后台结合来解决问题(Token)
每次提交前段的Token值与后端的Token值互相比较,相等则进行运算逻辑,不相等则返回 (现在主流的框架都支持Token验证)
2、按钮置灰的方式来防止重复提交
如果提交对象为按钮的话,可以对按钮设置disabled,此办法适应于按钮提交,此种方法简单粗暴,也是很多人用的办法,代如下:
//在按钮提交之后和AJAX提交之前将按钮设置为禁用
$("input[type=submit]").attr('disabled',true)
$.ajax({
url:'/post.php'
data:{a:1,b,1}
success:function(){
//在提交成功之后重新启用该按钮
$("input[type=submit]").attr('disabled',false)
},
error: function(){
//即使AJAX失败也需要将按钮设置为可用状态,因为有可能是网络问题导致的失败,所以需要将按钮设置为可用
$("input[type=submit]").attr('disabled',false)
}
})
3、设置 js (flag)对象来控制是否进入提交流程 ,非按钮提交时由于没有disabled属性,所以我们需要用其它方式来防止重复提交
//设置一个对象来控制是否进入AJAX过程
var post_flag = false;
function post(){
//如果正在提交则直接返回,停止执行
if(post_flag) return;
//标记当前状态为正在提交状态
post_flag = true;
$.ajax({//进入AJAX提交过程
url:'/post.php'
data:{a:1,b,1}
success:function(){
post_flag =false; //在提交成功之后将标志标记为可提交状态
},
error: function(){
post_flag =false; //AJAX失败也需要将标志标记为可提交状态
}
})
}