zoukankan      html  css  js  c++  java
  • 防止重复提交

    简介

         在现在的web开发中我们经常使用ajax从后端获取数据,提交数据。对于有些游戏爱好者或者手速甚快的同学来说,一个按钮触发click事件可以触发多次。有经验的前端开发者肯定会使用防止重复提交方式避免重复提交数据。有经验的后端则会在每次提交数据时加vision版本号。如果后端加版本号来验证,则需要前端每次提交时增加版本号这个字段。因此做防止重复提交还是交给伟大的前端同学哈!现在我就把我所使用的方式分享给大家。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>防止ajax重复提交</title>
        </head>
        <body>
            
            
            <button id="btn">提交</button>
            <script>
                
                /**
                 * 模拟ajax提交
                 * @fn 回调函数
                 * */
                function Ajax(fn){
                    setTimeout(function(){
                        var data= {result:true,msg:'提交成功!'};
                        fn(data);
                    },2000);
                }
                /**
                 * btn click 提交事件
                 * 
                 * */
                btn.onclick=function(){
                    //检查 按钮是否被锁住,锁住直接rerun
                    if(btn.getAttribute('lock')){
                        return;
                    }
                    //上锁
                    btn.setAttribute('lock',1);
                    //更改状态
                    btn.innerText='提交中...';
                    
                    Ajax(function(data){
                        //请求成功
                        if(data.result){
                            console.log('请求成功');
                            //请求成功解锁
                            btn.setAttribute('lock',"");
                            //还原状态
                            btn.innerText='提交';
                        }else{
                            console.log('请求失败');
                            //请求失败解锁
                            btn.setAttribute('lock',"");
                            //还原状态
                            btn.innerText='提交';
                        }
                    });
                }
            </script>
        </body>
    </html>

    逻辑思路:
    1.提交数据之前判断当前提交按钮是否存在lock锁
    2.在ajax提交之前给提交按钮上锁
    3.ajax成功之后或者失败之后解锁

    在线demo

    总结

        防止重复提交在开发中很实用,希望能够帮到你。

  • 相关阅读:
    ASP.NET Core基于SignalR实现消息推送实战演练
    corn常用表达式
    muzejs 基于webassembly 的高性能数据可视化库
    xk6 构建原理说明
    集群、分布式、负载均衡区别
    Docker深入浅出系列 | Swarm多节点实战
    You Can’t Sacrifice Partition Tolerance
    Cookies are deleted when I close the browser?
    Using more than one index per table is dangerous?
    Multiple Indexes vs Multi-Column Indexes
  • 原文地址:https://www.cnblogs.com/xiaoxiaokun/p/7543129.html
Copyright © 2011-2022 走看看