js 怎样防止 刷新重复提交

如题所述

使用Session

在提交的页面也就是数据库处理之前:

if session("ok")=true then
response.write "错误,正在提交"
response.end
end if

数据处理完后,修改session("ok")=false。

数据处理成功马上Redirect到另外一个页面

操作后刷新的确是个问题,你可以使用跳转页面、关闭本页面,如果是有参数据条件来控制的,那就应该好做了,可以直接修改window.location的值,把参数全部改掉,这样就差不多了。

缺点:简单地运用Response.Redirect将不再有效,因为用户从一个页面转到另一个页面,我们都必须用客户端代码清除location.history。注意,这种方法清除的是最后一个访问历史记录,而不是全部的访问记录。 点击后退按钮,再点击后退按钮,你可以看到这时打开的是本页面之前的页面!(当然,这是在你的客户端启用了javascript功能的条件下。)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-13
下面的方法采用的是屏蔽法:
<script language="javascript">
//禁止用F5键
function document.onkeydown()
{
if ( event.keyCode==116)
{
event.keyCode = 0;
event.cancelBubble = true;
return false;
}
}

//禁止右键弹出菜单
function document.oncontextmenu()
{
return false;
}

//下面代码实现全屏显示
function window.onload(){
var Request = new Array();//保存参数
var s = location.search.substring(1);
if (s && s!=""){
var list = s.split("&");
for (var i=0; i < list.length; i++){
var pair = list[i].split("=");
if (pair[0] && pair[0] !=""){
Request[unescape(pair[0])] = unescape(pair[1]);
}
}
}

var fullscreen=Request["fullscreen"];
if(fullscreen!="yes"){
var file =self.location;
var a = window.open("about:blank","","fullscreen=yes")
self.opener=null
self.close()
a.location=file + "?fullscreen=yes";
}
}
</script>
第2个回答  推荐于2017-09-22
1、用 javascript 设置一个变量,只允许提交一次;
参考如下:
<script type="text/javascript">
  var checkSubmitFlg = false;
  function checkSubmit(){
   if (checkSubmitFlg == true){
     return false;
   }
   checkSubmitFlg = true;
   return true;
  }
  document.ondblclick =
  function docondblclick(){
  window.event.returnValue = false;
  }
  document.onclick =
  function doconclick(){
    if (checkSubmitFlg){
     window.event.returnValue = false;
    }
}
</script>
<form action="action.php" method="post" onsubmit="return checkSubmit();">

用 javascript 将提交按钮或者 img 置为 disable;
参考如下:
<form action="action.php" method="post" onsubmit="getElById('submitInput').disabled = true;return true;"> 
<img styleId="submitInput" src="images/ok_b.gif" border="0" />
</form>
第3个回答  2012-03-13
JS在reload(重新加载)的时候是无效的,因为页面还没有加载如何执行JS?
这个问题还是到服务端解决。

我提供一个解决思路:
1. 在打开“表单页”的时候创建一个随机数,保存在SESSION中,同时也在表单中使用隐藏域保存此值
2. 用户提交表单时,验证隐藏域的值在SESSION中是否存在,存在则提交表单,且移除SESSION保存的随机值。不存在则说明此表单已经提交过了。

这个就是一楼“靳静刚”同学说说了令牌方式,我给解释通俗点~
我是写ASP.NET,实现起来很简单。如果你也是一样的语言可以短消息我寻求帮助
第4个回答  2012-03-16
提交的函数里面把提交的按钮Disable掉,一提交就不能点了,不会重复