js 怎样防止 刷新重复提交
7个回答
展开全部
使用Session
在提交的页面也就是数据库处理之前:
if session("ok")=true then
response.write "错误,正在提交"
response.end
end if
数据处理完后,修改session("ok")=false。
数据处理成功马上Redirect到另外一个页面
操作后刷新的确是个问题,你可以使用跳转页面、关闭本页面,如果是有参数据条件来控制的,那就应该好做了,可以直接修改window.location的值,把参数全部改掉,这样就差不多了。
缺点:简单地运用Response.Redirect将不再有效,因为用户从一个页面转到另一个页面,我们都必须用客户端代码清除location.history。注意,这种方法清除的是最后一个访问历史记录,而不是全部的访问记录。 点击后退按钮,再点击后退按钮,你可以看到这时打开的是本页面之前的页面!(当然,这是在你的客户端启用了javascript功能的条件下。)
在提交的页面也就是数据库处理之前:
if session("ok")=true then
response.write "错误,正在提交"
response.end
end if
数据处理完后,修改session("ok")=false。
数据处理成功马上Redirect到另外一个页面
操作后刷新的确是个问题,你可以使用跳转页面、关闭本页面,如果是有参数据条件来控制的,那就应该好做了,可以直接修改window.location的值,把参数全部改掉,这样就差不多了。
缺点:简单地运用Response.Redirect将不再有效,因为用户从一个页面转到另一个页面,我们都必须用客户端代码清除location.history。注意,这种方法清除的是最后一个访问历史记录,而不是全部的访问记录。 点击后退按钮,再点击后退按钮,你可以看到这时打开的是本页面之前的页面!(当然,这是在你的客户端启用了javascript功能的条件下。)
展开全部
下面的方法采用的是屏蔽法:
<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>
<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>
参考如下:
<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>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
JS在reload(重新加载)的时候是无效的,因为页面还没有加载如何执行JS?
这个问题还是到服务端解决。
我提供一个解决思路:
1. 在打开“表单页”的时候创建一个随机数,保存在SESSION中,同时也在表单中使用隐藏域保存此值
2. 用户提交表单时,验证隐藏域的值在SESSION中是否存在,存在则提交表单,且移除SESSION保存的随机值。不存在则说明此表单已经提交过了。
这个就是一楼“靳静刚”同学说说了令牌方式,我给解释通俗点~
我是写ASP.NET,实现起来很简单。如果你也是一样的语言可以短消息我寻求帮助
这个问题还是到服务端解决。
我提供一个解决思路:
1. 在打开“表单页”的时候创建一个随机数,保存在SESSION中,同时也在表单中使用隐藏域保存此值
2. 用户提交表单时,验证隐藏域的值在SESSION中是否存在,存在则提交表单,且移除SESSION保存的随机值。不存在则说明此表单已经提交过了。
这个就是一楼“靳静刚”同学说说了令牌方式,我给解释通俗点~
我是写ASP.NET,实现起来很简单。如果你也是一样的语言可以短消息我寻求帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
提交的函数里面把提交的按钮Disable掉,一提交就不能点了,不会重复
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询