javascript下阻止表单重复提交、防刷新、防后退
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'>" <!-- 这个方法只是个想法,没有经过调试 -->
相关推荐
-
用JavaScrip正则表达式验证form表单的方法
document:标签之间 location:url history:前进后退 <html> <head> <script type="text/javascript"> function show() { //弹出一个提示框 window.alert("hh"); } //将show方法绑定到按钮上 window.onload=function() { //定位到按钮 var buttonElement=document.for
-
阻止表单提交按钮多次提交的完美解决方法
如果表单是通过onsubmit进行Ajax提交,注意将表单提交按钮input type属性设为button,尽量不要设置为submit类型. 另外,在提交事件发出后,最好将提交按钮设置为disabled,防止由于网络延时问题,让用户有机会进行多次点击重复提交. onclick事件里面执行 $(this).attr('disabled','disabled'); 在点击一次后立马将按钮设置为不可使用. 或者向如下方法另行定义一个jQuery函数来进行控制: $("form").submi
-
JS去掉字符串前后空格、阻止表单提交的实现代码
$.trim(str) jQuery内部实现为: function trim(str){ return str.replace(/^(\s|\u00A0)+/,'').replace(/(\s|\u00A0)+$/,''); } 使用JS和JQuery 阻止表单提交的两种方法 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk">
-
利用JavaScript阻止表单提交的两种方法
在JavaScript中,阻止表单默认提交行为的方法有两种,分别是: (1) return false 示例代码 <form name="loginForm" action="login.aspx" method="post"> <button type="submit" value="Submit" id="submit">Submit</button&g
-
JavaScript阻止表单提交方法(附代码)
<body> <form action="clock.html" method="post" onsubmit="return checkLength()"> <p>name:<input type="text" name="user" id="user"></p> <input type="submit&quo
-
使用Ajax方法实现Form表单的提交及注意事项
写在前面的话 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控制页面的跳转及数据传递,但是在某些时候不希望页面跳转,或者说想要将控制权放在前端,通过js来操作页面的跳转或者数据变化. 一般这种异步的操作,我们都会想到ajax方式,因此在实现了功能后就整理了这篇文章,通过ajax方法实现form表单的提交并进行后续的异步操作. 常见的form表单提交方式 <!DOCTYPE HTML PUBLIC "-//W3C/
-
onsubmit阻止form表单提交与onclick的相关操作
1. return 的返回值问题,函数中return一旦有返回值,就不在执行下面的语句,直接跳到函数调用的地方.如下PHP函数代码,第一个if条件符合则函数值返回布尔型false,可以返回一个函数的值,并且跳出这个函数:只要遇到return语句,程序就在那一行代码停止执行,执行控制将立刻返回到调用该程序的代码处.function 复制代码 代码如下: function chkinput(form) { if(form.title.value=="") { alert("请输入
-
javascript下阻止表单重复提交、防刷新、防后退
1 服务器端的解决方法.这是我最为推荐的方法.优点是判断准确,兼容性最大. 做法:a页面显示表单,然后提交b页面处理,处理完后重定向到c页面显示结果. 1.0 在访问a页面时在session里生成一个标志ID,例如 //伪代码 session("submitID")=random() 然后把这个值写到表单的一个hidden的input里 //伪代码 <%response.write("<input name=submitID2 type=hidden val
-
php解决和避免form表单重复提交的几种方法
前言 为什么要避免form表单被重复提交呢?因为我们不想让我们的服务器重复处理没必要的数据,同时我们也是避免我们的数据库产生重复的数据,避免表单重复提交也是让我们的网站更安全的一种表现. 先看一下有哪些情况下回导致表单重复提交呢,知道哪些情况下可能会出现表单重复提交就可以从根源处理表单重复提交的情况了. 下面的情况就会导致表单重复提交: 点击提交按钮两次. 点击刷新按钮. 使用浏览器后退按钮重复之前的操作,导致重复提交表单. 使用浏览器历史记录重复提交表单. 浏览器重复的HTTP请求. 网页被恶
-
springMVC如何防止表单重复提交详解
目录 前言 防止表单重复提交 单机 实现的思路步骤 代码实现 分布式 实现的思路步骤 代码实现 总结 前言 在系统中,有些接口如果重复提交,可能会造成脏数据或者其他的严重的问题,所以我们一般会对与数据库有交互的接口进行重复处理 首先可以在前端做一层控制.当前端触发操作时,或弹出确认界面,或 disable 禁用按钮等等,但是这并不能彻底解决问题.假设我们不是从客户端提交,而是被其他的系统调用,还会遇到这种问题 为了彻底解决问题,还需要在后端对接口做防重处理 一般会引起表单重复提交的场景 在网
-
常见表单重复提交问题整理及解决方法
/** * * @authors Benjamin * @date 2013-11-13 10:16:59 */ 一.常见的重复提交问题 a>点击提交按钮两次. b>点击刷新按钮. c>使用浏览器后退按钮重复之前的操作,导致重复提交表单. d>使用浏览器历史记录重复提交表单. e>浏览器重复的HTTP请求. 二.防止表单重复提交的方法 a>禁掉提交按钮.表单提交后disabled现在的按钮或者取消该按钮的点击事件或者默认事件.这种方法防止心急的用户多次点击按钮.但有个问
-
详谈表单重复提交的三种情况及解决方法
第一种情况:提交完表单以后,不做其他操作,直接刷新页面,表单会提交多次. - 在servlet中写一句输出,用来判断是否提交多次 System.out.println("已经插入"); request.getRequestDispatcher("/login_success.jsp").forward(request, response); - 这样的话,刷新多少次,就会在控制器显示多少个"已经插入". - 根本原因:Servlet处理完请求以后
-
几种防止表单重复提交的方法
表单重复提交是在多用户Web应用中最常见.带来很多麻烦的一个问题.有很多的应用场景都会遇到重复提交问题,比如: 点击提交按钮两次. 点击刷新按钮. 使用浏览器后退按钮重复之前的操作,导致重复提交表单. 使用浏览器历史记录重复提交表单. 浏览器重复的HTTP请求. 几种防止表单重复提交的方法 禁掉提交按钮.表单提交后使用Javascript使提交按钮disable.这种方法防止心急的用户多次点击按钮.但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了. 我之前的文章曾说过用一些
-
PHP防止表单重复提交的几种常用方法汇总
本文较为详细的汇总了PHP防止表单重复提交的几种常用方法,在PHP程序开发中有着很高的实用价值.具体方法如下: 1. 使用JS让按钮在点击一次后禁用(disable).采用这种方法可以防止多次点击的发生,实现方式较简单. 缺点是若客户端禁止JavaScript脚本,则失效. 2. 在提交成功后执行页面重定向(redirect).转到提交成功信息页面. 特点:避免F5重复提交,消除浏览器前进和后退按钮可导致的同样问题. 3. 表单隐藏域中存放session(表单被请求时生成的标记).采用此方法在接
-
浅谈利用Session防止表单重复提交
解决项目中表单重复提交的问题,在平常的项目中有以下几种可能出现表单重复提交的情况,比如说: 1.由于服务器缓慢或者网络延迟的原因,重复点击提交按钮 2.已经提交成功,但是还不停刷新成功页面 3.已经提交成功,通过回退,再次点击提交按钮. 这些情况都可能使数据库中产生过多相同的冗余数据,浪费数据库资源.只有转发才会出现,重定向则不会. 针对第一种情况的解决方案(使用JavaScript),对后面两种无效: 首先在页面中添加如下格式的JavaScript代码 var submitFlag=false
-
PHP+Session防止表单重复提交的解决方法
index.php 当前表单页面is_submit设为0 SESSION_START(); $_SESSION['is_submit'] = 0; <form id="reg" action="post.php" method="post"> <p>用户名:<input type="text" class="input" name="username" i
-
php防止表单重复提交实例讲解
说来惭愧,前几天做项目的时候,出现个低级错误.在公司后台做表单提交,一是自己员工用,二是 html 自己来写的,没有验证表单重复提交,结果出错了.写出来记录下以便提醒自己,时刻不能疏忽. 解决方法 其实方法有很多种,只举例几个简单的来说说. 框架 很多框架都有防止重复提交的功能,大家应该都有了解,这里不再赘述. 前端 原理很简单,用户点击提交之后,使用 JS 将提交按钮置灰即可. 后端 也就是使用 PHP 进行验证,当然不局限以下几种 Cookie 用户提交表单到后端,在 Cookie 中做标记
随机推荐
- ThinkPHP实现支付宝接口功能实例
- Access使用宏控制程序--1.6.使用宏的几点说明
- Android中LinearLayout布局的常用属性总结
- Android编程调节屏幕亮度(背景灯)及保持背景灯常亮的方法
- mysqldump命令导入导出数据库方法与实例汇总
- 一些SQL Server存储过程参数及例子
- jQuery插件zTree实现的基本树与节点获取操作示例
- 纯jQuery实现前端分页功能
- jQuery 全选 全不选 事件绑定的实现代码
- jquery中的查找parents与closest方法之间的区别
- Python 探针的实现原理
- Android 获得屏幕宽高的三种方式
- 路由器+WIC-1ADSL的配置静态和动态
- Spring boot集成Kafka+Storm的示例代码
- jQuery判断网页是否已经滚动到浏览器底部的实现方法
- angularjs 的数据绑定实现原理
- 巧用注册表编辑器还IE清白面目
- 彻底解决Spring mvc中时间的转换和序列化等问题
- Java与Python之间使用jython工具类实现数据交互
- 微信小程序websocket聊天室的实现示例代码