当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript下阻止表单重复提交、防刷新、防后退

Javascript
JavaScript XML实现两级级联下拉列表
javascript显示选择目录对话框的代码
javascript HTML操作代码
用js删除tbody的代码
javascript firefox不显示本地预览图片问题的解决方法
js Array的用法总结
js fromCharCode输出26个字母的代码
js option删除代码集合
JavaScript面向对象之体会[总结]
javascript 命名空间以提高代码重用性
javascript vvorld 在线加密破解方法
javascript 限制输入和粘贴(IE和火狐3.x下测试通过)
火狐浏览器(firefox)下获得Event对象以及keyCode
刷新页面实现方式总结(HTML,ASP,JS)
Ajax,UTF-8还是GB2312 eval 还是execScript
javascript 出生日期和身份证判断大全
JS清空上传控件input(type="file")的值的代码
javascript 限制输入和粘贴(IE,firefox测试通过)
js实现简单模态窗口,背景灰显
option挡住div解决方法

Javascript 中的 javascript下阻止表单重复提交、防刷新、防后退


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 300 ::
收藏到网摘: n/a

1 服务器端的解决方法。这是我最为推荐的方法。优点是判断准确,兼容性最大。
做法:a页面显示表单,然后提交b页面处理,处理完后重定向到c页面显示结果。
1.0 在访问a页面时在session里生成一个标志ID,例如
//伪代码
session("submitID")=random()
然后把这个值写到表单的一个hidden的input里
//伪代码
<%response.write("<input name=submitID2 type=hidden value=\""+session("submitID")+"\">")%>
1.1 b页面处理时判断表单所提交的submitID2的值是否和session中的submitID一致,不一致的话重定向到报错页面,一致的话把session中的submitID清空然后进行表单处理
//伪代码
session("submitID")=""
//然后处理提交......
处理完成后重定向到c页面
1.2 c页面其实就没什么好说的了,就是一个显示处理结果的页面。
2 客户端用js解决
这种方法不好,因为必然会遇到不同浏览器的兼容性问题,而且是必然可以绕过的。唯一的优点就是简单,不需要太多的编码
2.0防止后退
在每个页面的最顶上加上这个代码
<script>window.history.forward();</script>
2.1防止刷新
我很难想到什么好方法可以做到。因为要屏蔽的地方太多了。只好采用一种很烂的方法:
<body onunload="location='about:blank'>" <!-- 这个方法只是个想法,没有经过调试 -->