jquery ajax如何防止多次提交

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery ajax如何防止多次提交相关的知识,希望对你有一定的参考价值。

有时用jquery ajax处理数据的时候,如果网速不好或其它原因用户会有机会多次点击提交,导致数据重复。请问如何避免。。

  部分重要代码:
  $.ajax(
type:'post',
url:'LibraryBooks_data.php',
data:params,
dataType: 'json',
async:false, //这是重要的一步,防止重复提交的
success: function (a)

if(a.action=='ture')
   $.success('操作成功!');


);

  默认设置下,所有请求均为async异步请求。
  如果需要发送同步请求,请将此async选项设置为 false。

  注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行(默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此async选项设置为 false。
  注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
参考技术A 按钮提交后变为不可用,当ajax返回结果是成功的时候把按钮重新变为可用本回答被提问者和网友采纳 参考技术B 在函数定义全局变量..var Stch=false
if (Stch==true)

alert('请不要重新提交');
else
Stch=true;
$.ajax(type:"POST",
url:"C_Eidt.do",
golobal:false,
success:function(data)
Stch=false;
;);
参考技术C 提交后,根据返回的状态值 给按钮加上隐藏或者显示的属性 参考技术D 点击提交后..禁用提交按钮...

Jquery 实现表单提交按钮变灰,防止多次点击提交重复数据

 表单提交时候我们应该控制提交按钮,不能点击多次进行数据的重复提交。要不然就会有冗余的重复的数据在系统中,造成系统出现数据垃圾。jQuery很简单的就可以实现对表单提交按钮控制,下面就是相关的例子和代码。

 

[html] view plain copy
 
  1. <form action="${pageContext.servletContext.contextPath}/XXX/###" method="post" id="messageForm">  
  2.     姓名:<input name = "name" type="text" />  
  3.              <button type="button" id="submit">提交申请</button>  
  4. </form>  
  5. <script>  
  6. $("#submit").click(function(){  
  7.   
  8.     $(this).attr("disabled","true"); //设置变灰按钮  
  9.     $("#messageForm").submit();//提交表单  
  10.     setTimeout("$(\'#submit\').removeAttr(\'disabled\')",3000); //设置三秒后提交按钮 显示  
  11.        
  12. })  
  13. </scritp></span>  
  14.   
  15. </span>  


附:其他的实现方法,也使用了js

  第一种:

[html] view plain copy
 
  1. <form name=fm method="POST" action="/">  
  2. <p>按钮变灰</p>  
  3.     name: <input type="text" name="name"/>  
  4.      <input type="button" value="提交" onclick="javascript:{this.disabled=true;document.fm.submit();}">  
  5.   
  6. </form>  



 第二种:

 

 

[html] view plain copy
 
  1. <form name=fm method="POST" action="/" >  
  2.   <input type="submit" name="Submit" value="提交" id="submitId" onclick="submit();">  
  3. </form>  
  4. <script language="javascript">  
  5.  function submit()  
  6.  {  
  7.  var submitId=document.getElementById(\'submitId\');  
  8.  submitId.disabled=true;  
  9.  document.fm.submit();  
  10.  setTimeout("submitId.disabled=false;",3000); //代码核心在这里,3秒还原按钮代码  
  11. }  
  12. </script>   


前后代码进行控制,后台代码也要进行控制,这样子就可以确保万无一失了!

后台代码控制表单提交有一个好的办法就是使用session, 具体可以参考下面这篇博文:

 

JavaWeb学习总结(十三)——使用Session防止表单重复提交

http://www.cnblogs.com/xdp-gacl/p/3859416.html

 

 

其实后台控制表单重复提交的原理:

(1)在表单提交页面生成一个唯一的token;token可以保存在session中。(若使用了缓存,也可以保存在缓存中)

(2)提交的时候验证,后台首先验证token,验证通过,才可以进行提交操作;

(3)当表单数据提交成功(保存到数据库-持久化),然后删除session(缓存)中对应的token。

 

 

 

在页面中添加Token防止越权访问-也可做表单重复提交,使用的原理也是Token!

 

 

http://blog.csdn.net/chinawszjr/article/details/51096095

 
 转载于:http://blog.csdn.net/u010648555/article/details/49621533

以上是关于jquery ajax如何防止多次提交的主要内容,如果未能解决你的问题,请参考以下文章

Jquery 防止Ajax重复提交权威解决方案

jQuery防止表单多次提交

Jquery 实现表单提交按钮变灰,防止多次点击提交重复数据

Jquery 实现表单提交按钮变灰,防止多次点击提交重复数据

如何防止使用 jQuery 或 Javascript 进行双重提交?

jQuery的$ .ajax防止重复提交的方法