js 怎样防止 刷新重复提交

 我来答
Creamedged
推荐于2016-05-12
知道答主
回答量:15
采纳率:0%
帮助的人:5.2万
展开全部
使用Session

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

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

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

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

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

缺点:简单地运用Response.Redirect将不再有效,因为用户从一个页面转到另一个页面,我们都必须用客户端代码清除location.history。注意,这种方法清除的是最后一个访问历史记录,而不是全部的访问记录。 点击后退按钮,再点击后退按钮,你可以看到这时打开的是本页面之前的页面!(当然,这是在你的客户端启用了javascript功能的条件下。)
是勇敢
2012-03-13 · 希望快乐渡过第一天。
是勇敢
采纳数:914 获赞数:1799

向TA提问 私信TA
展开全部
下面的方法采用的是屏蔽法:
<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>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于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>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ndlinjian
2012-03-13 · 超过30用户采纳过TA的回答
知道答主
回答量:127
采纳率:0%
帮助的人:74.4万
展开全部
JS在reload(重新加载)的时候是无效的,因为页面还没有加载如何执行JS?
这个问题还是到服务端解决。

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

这个就是一楼“靳静刚”同学说说了令牌方式,我给解释通俗点~
我是写ASP.NET,实现起来很简单。如果你也是一样的语言可以短消息我寻求帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liujj4241
2012-03-16 · TA获得超过4043个赞
知道大有可为答主
回答量:7021
采纳率:58%
帮助的人:784万
展开全部
提交的函数里面把提交的按钮Disable掉,一提交就不能点了,不会重复
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式