防止重复提交

简介

在现在的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提交
                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连接sandbox.runjs.cn/show/3jrhzr…

总结

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,325评论 25 709
  • 为什么会有表单重复的坑 在开发中,如果一个新增或修改的表单,在后台完成数据库操作后我们设定的不是跳转到其他页面,还...
    大刘的英语世界阅读 11,536评论 6 14
  • 屋里放着那首曲终人散, 街角的一对情侣笑容灿烂, 路灯突然亮起, 刺痛我的眼。 云说, 有沧海能变桑田, 却没有人...
    君兮阅读 1,751评论 20 8
  • 简书连载风云录蔷薇小说目录择一世长安专题择一世长安【目录】 文丨蔷薇下的阳光 上一章丨《第五十七章:一夜一翻牌》 ...
    蔷薇下的阳光阅读 4,001评论 4 9

友情链接更多精彩内容