防止页面刷新后插入重复数据

原创 2012年03月22日 16:22:18

        在web项目中防止用户刷新页面插入重复数据是开发人员必须考虑的异常情况之一。我的解决方法是当用户完成添加操作之后,将url指向查询action。例如:用户执行完添加操作时地址栏中的url如下:http://127.0.0.1:8080/MijItem/admin/logisticsAction!addLogisticsSendInfo.action
此时,要让它转到从一览画面点击修改后执行的那个方法:http://127.0.0.1:8080/MijItem/admin/logisticsAction!toEditLogistics.action。采用的方法是ajax提交后指向查看action。具体代码如下:

function addSendInfo(){
	var delegate_id = $.trim($('#delegate_id').val());
	var logisticNO = $.trim($('#logisticNO').val());
	var carryNo = $.trim($('#carryNoForest').val());
	if($("#sForm").valid()){
		$.ajax({
		  type:"POST",
		  url:"admin/logisticsAction!checkCarryNo.action",
		 data: {carryNoForest:carryNo,delegate_id:delegate_id,logisticNO:logisticNO,pageCurr:pageCurr},
		 dataType: "text",
		 success:function(html){
			if(html=="success"){
				$.ajax({
				type:"POST",
				url:"admin/logisticsAction!addLogisticsSendInfo.action",
				data: {delegate_id:delegate_id,logisticNO:logisticNO,},
				dataType: "text",
				success:function(html){
				if(html=="success"){
				    $("#sForm").attr("action","<%=contextPath%>/admin/logisticsAction!toEditLogistics.action");
				    $("#sForm").submit();
				  } else {
				      jqDialog.alert("<s:text name='struts.webui.logistics.label.OperationFailedPleaseTryLater'/>");
						}
					}
				});
			} else {
				jqDialog.alert("<s:text name='struts.webui.logistics.label.carryNoExists'/>");
					}
				}
			});
		}
	}

后台方法执行成功后返回success字符串,ajax判断成功后执行toEditLogistics.action并将表单提交。如果执行失败,弹出操作失败消息框。这样处理既可以防止页面刷新插入重复数据,也可以根据后台返回的字符串做排他判断。

关于数据库层面上锁,解决程序并发插入多条重复数据

公司的app新版本上线,其中有一个摇一摇的功能,由于安卓端没有做好处理,导致在同一时间数据post提交了2次。在后台判断发现并没有插入的数据,然后啪啪啪一下子插入了2条。也就是在插入前没有判断是否插过...
  • qq_14874941
  • qq_14874941
  • 2016年08月17日 13:50
  • 1768

mysql sql 防止重复插入相同的记录实例

mysql sql 防止重复插入相同的记录实例
  • yafei450225664
  • yafei450225664
  • 2016年11月11日 14:49
  • 539

数据库并发插入避免重复数据的问题

今天稍微研究了下这个问题从网上整理资料大致得到了如下方案,先粗略记录下,下班回去再更详细记录下。 所有的方法都先不考虑性能问题,也不考虑业务,只看逻辑上能否达到去重复插入,因为第一,如果唯一性是必须要...
  • baojianhuangbo
  • baojianhuangbo
  • 2015年08月20日 11:16
  • 2781

Sqlite 防止插入重复数据

在SQLITE中,可以用以下方法防止插入重复数据, 1.设置表的联合主键 2.在INSERT语句中添加OR IGNORE,即可(重复数据会跳过,且不影响后续数据插入) 示例如下: insert OR...
  • wlphlj
  • wlphlj
  • 2013年09月24日 15:35
  • 10389

sqlite避免重复插入数据

用insert语句插入数据,为避免重复插入又不打断数据处理。 首先要避免重复插入,就必须在插入时引发冲突。在表中设置了id字段,该字段为UNIQUE属性,当插入的id已存在时引发冲突。 引发冲突后...
  • shangxinlei88
  • shangxinlei88
  • 2014年12月22日 12:00
  • 1584

Mysql忽略主键冲突,避免重复插入的几种方式

原文地址:http://blog.csdn.net/u010913106/article/details/50782728 mysql忽略主键冲突,避免重复插入的几种方式 ...
  • tanga842428
  • tanga842428
  • 2016年10月11日 14:56
  • 5602

Thinkphp3.2中解决插入相同数据的问题

解决插入相同数据的问题;ON DUPLICATE KEY UPDATE;`REPLACE INTO `;`ON DUPLICATE KEY UPDATE`与`REPLACE INTO `区别;Thin...
  • hsd2012
  • hsd2012
  • 2016年06月03日 15:16
  • 2598

线上遇到插入重复数据(重复提交)

今天发现日志 有人登陆不上系统 个人信息发现有重复记录  数据库插入的秒数都一样 当时服务器比较卡 日志如下 2016.05.19 17:51:15 com.mchange.v2.c3p0....
  • AlbertFly
  • AlbertFly
  • 2016年05月19日 21:38
  • 2790

重复插入数据的另类解决思路

在进行插入数据时,我们会先从数据库查询是否已经拥有该记录,但是最后会发现这个判断没有任何效果,导致这个判断失效的原因有很多,比如事务没有提交,或者多台服务器都执行了相同的代码,或者你的控制器(stru...
  • u010634053
  • u010634053
  • 2015年12月08日 17:45
  • 1325

并发insert情况下会发生重复的数据插入问题

并发insert情况下会发生重复的数据插入问题 1.背景    用多线程接收推送的订单数据,把接收的订单数据存到一个表中,实现的需求是:如果接收的订单消息在数据库中已经存在,那么执行update操作;...
  • lululove19870526
  • lululove19870526
  • 2017年03月06日 20:58
  • 4223
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:防止页面刷新后插入重复数据
举报原因:
原因补充:

(最多只允许输入30个字)