• 表单的重复提交问题


    如何防止表单的重复提交...

    问题分析:
    1、你怎么知道提交的表单是重复的?
    2、确认了表单是重复的,如何去防止被提交...

    问题解答:
    1、个人认为:对同一个表单做了相同的重复操作...就认为是重复表单...也即每次提交表单的内容是相同的就认为是重复的...
    2、解决办法:
      js解决:
    (1)对按钮进行控制

    var $button = document.getElementById("btn");//获取button对象
        $button.attr("disabled","disabled");
        window.setTimeout(function(){
        $button.removeAttr("disabled");},1000);    

    当然这么操作的前提是,你在disbaled后,要对表单进行处理,比如清空操作...

    (2)做状态位进行标识...

    <script language="javascript"> 
    var checkSubmitFlg = false; 
    function checkSubmit() { 
        if (!checkSubmitFlg) { 
            checkSubmitFlg = true; 
            return true; 
            }
        else{ 
                alert("不能重复提交"); 
                return false; 
                } 
    } 
    </script>                         
    <form action="XXXX" method="POST" onsubmit="return checkSubmit()"> 
    内容:<input type="text" name="content" value=""/><br> 
    <input type="submit" value="提交"><br> 
    </form>

    疑问:做这种标识,如何判断你是换了另一个表单...

    (3)加验证码,在每次提交时进行验证...防止重复提交..

    后台程序解决:
    大概主要用到一个token机制..
    可以参考struts2的token机制,还有Token Session(令牌机制)
    在每次表单提交时,action会调用isValidToken()方法,进行判断是否相同的token,如果相同,
    进行提交,如果不同,认为是重复提交..
    当然这种前提是:
    在你打开新增表单的时候,会调用action,生成token码..然后在你的表单和session中各保存一份,
    当提交调用action时,会进行token检查,并且在action处理完后,会重置session 中的token,此时你再提交,
    就会导致token不一致,没法提交...当然...意思就是要重新调用action生成新的token,和session保持一致...

  • 相关阅读:
    c#web中定义全局变量,传递变量
    关于Dropdownlist 与 autopostBack 问题多级联动 例 省/市/区
    发布附件应用小研究
    dell更换同型号的主板注意
    dotnet文本编辑器控件的应用
    小结解决双网卡网关问题(route add p) 关于静态路由
    读取数据表中符合条件的记录和数目
    密码最短长度为 7,其中必须包含以下非字母数字字符: 1(转)
    Hibernate 中的核心接口与类
    什么是整洁的代码(Clean Code)?
  • 原文地址:https://www.cnblogs.com/lovebaoqiang/p/3753488.html
Copyright © 2020-2023  润新知