(1)首先如果是 提交表单后提交按钮变灰/隐藏提交按钮,但是这个办法不能够防止“刷新”的重复提交,不是很推荐(如果能够结合后面的方法,这个在表现形式上还是不错的)
(2)最简单:页面提交后转到另一个页面而不是本页面,这个办法可能有朋友会说,如果我就是要留在原页面呢,其实这个时候你可以写一个中间页形式的东西,在跳回来。
(3)在js里设置全局变量,提交后修改该变量的值,依据变量的值判断是否重复提交
var flag=false;
function checkForm(){
if (flag==true){
return false;
}
flag=true;
document.form1.submit();
}
(4)在登录用户的Session中,放置一个随机数作为同步标记,并在初始化新增或编辑页面时就返回到前台页面中,用隐藏域赋值,当form被提交时,form中的同步标记就和Session中的同步标记作对比。在form首次提交的时候,这两个标记应该是一样的。如果标记不一样,那么该form就会禁止提交,一个错误就会返回给用户。在用户提交一个form时,如果按下浏览器中的后退按钮并尝试重新提交同一个form时,标记就会出现不匹配的现象。
另一方面,如果两个标记值匹配,那么我们就可以确信整个流程是正确的。在这种情况下,Session中的标记值就会被修改为一个新的值,同时允许提交该form。
还可以使用这个策略来控制对某些页面的直接访问,就好象上面资源保护中描述的一样。例如,假设一个用户将某个应用的页面A收藏到收藏夹中,而页面A 只允许通过页面B和C访问。当用户直接通过收藏夹来访问页面A,这时页面的访问顺序就是不正确的,这样同步标记将处在一个不同步的状态,或者它根本就不存在。不论怎样,访问都被禁止了。
以上是我遇到这个问题然后上网查资料之后总结的几点,个人觉得2,3比较实用