Ajax 防止表单重复提交

我们知道很多种防止表单重复提交的方法:

总结开来一共有以下三种:

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失败也需要将标志标记为可提交状态  
        }  
    })  


猜你喜欢

转载自blog.csdn.net/qq_37012236/article/details/78784794
今日推荐