FORM表单重复提交问题解决方法ITeye - 威尼斯人

FORM表单重复提交问题解决方法ITeye

2019年02月25日12时13分23秒 | 作者: 亦凝 | 标签: 表单,页面,符号 | 浏览: 1582

转自:http://blog.csdn.net/gideal_wang/article/details/4189694

  在开发中,假如一个新增或修正的表单,在后台完结数据库操作后咱们设定的不是跳转到其他页面,仍是回来本页面,这时点击浏览器的撤退再提交或改写页面,会导致form表单重复提交,即这条记载会被添加或修正两次。

    导致表单重复提交的原因是:第一次提交的表单会被缓存到内存中,直到页面下次提交或页面封闭或转向其他页面时才消失。在自调用回来时,内存中的数据仍然在,这时页面中的判别提交的代码仍然能够检测到提交的值,顾会发生重复提交的作用。

    总结网上的处理方法和自己的测验,能够用以下几个方法处理:

(1)最简略:页面提交后转到另一个页面而不是本页面

(2)提交表单后提交按钮变灰/躲藏提交按钮

(3)在js里设置全局变量,提交后修正该变量的值,根据变量的值判别是否重复提交
             var flag=false;
             function checkForm(){
               if (flagtrue){
                   return false;
               }
              flag=true;
              document.form1.submit();

             }

(4)在登录用户的Session中,放置一个随机数作为同步符号,并在初始化新增或修改页面时就回来到前台页面中,用躲藏域赋值,当form被提交时,form中的同步符号就和Session中的同步符号作比照。在form初次提交的时分,这两个符号应该是相同的。假如符号不相同,那么该form就会制止提交,一个过错就会回来给用户。在用户提交一个form时,假如按下浏览器中的撤退按钮并测验从头提交同一个form时,符号就会呈现不匹配的现象。
       另一方面,假如两个符号值匹配,那么咱们就能够坚信整个流程是正确的。在这种情况下,Session中的符号值就会被修正为一个新的值,一起答应提交该form。 

      还能够运用这个战略来操控对某些页面的直接拜访,就好象上面资源维护中描绘的相同。例如,假定一个用户将某个使用的页面A收藏到收藏夹中,而页面A 只答应经过页面B和C拜访。当用户直接经过收藏夹来拜访页面A,这时页面的拜访次序就是不正确的,这样同步符号将处在一个不同步的状况,或许它底子就不存在。不论怎样,拜访都被制止了。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章