㈠ js Ajax请求如何防止重复提交
好长时间没写js代码了刚好遇到这样的问题。我们系统多数表单没有做防止重复提交的。
由于不想在后端这边处理,因为假如由后端处理的话,就需要在页面加载的时候给出一次性的token值,加大了开发的工作量不说,还容易忘记做这个,同时,ajax也不好处理,需要提交失败的话同时返回新的token值。
所以我想在,js这边动手。其实以前和前端提过,久久不见动静,就只好弄块砖丢出去了。思路是,覆盖掉$.ajax,在这里面处理掉防止重复提交的问题,而前端的业务开发不受影响,不改代码,无感知。
我想架构的目的之一,就在于简化业务开发,屏蔽掉业务无关的细节,让一线开发安心写业务吧。
代码如下:
/**
*
Created
by
xiayongsheng
on
2016/6/12.
*/
;(function($){
var
ajax
=
$.ajax;
//
用于存储ajax的请求
var
ajaxState
=
{};
var
kinhomAjax
=
function
()
{
var
args
=
Array.prototype.slice.call(arguments,
0);
//
url
data
一致,
//
应该将
url取出,data按键值排序,后将值拼接在一起,进行sha1得到的值作为指纹
//
累先用
url作为指纹吧
var
hash
=
typeof
args[0]
===
'string'?args[0]:args[0].url;
if
(typeof
ajaxState[hash]
!==
'undefined')
{
if
(ajaxState[hash]
>
3)
{
alert('请不要重复提交,请求正在处理中');
}
++ajaxState[hash];
return
$.Deferred();
}
ajaxState[hash]
=
1;
var
def
=
ajax.apply($,args);
def.done(function
()
{
delete
ajaxState[hash];
});
return
def;
};
$.ajax
=
kinhomAjax;
})(jQuery);
以上所述是小编给大家介绍的JS
Ajax请求如何防止重复提交的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
㈡ JS WEB前端开发如何防止重复提交的实现方
在点击提交按复钮制后,将提交按钮立刻 禁用,然后在ajax请求成功后,再重新启用,下面是个简单的例子
$(".submit").click(function(){
$(this).attr("disabled",true);
$.ajax({
url:url,
success:function(data){
$(this).attr("disabled",false);
}
});
});
㈢ js 怎样防止 刷新重复提交
第一种方法:
<script
language="”javascript”">
var
checkSubmitFlg
=
false;
function
checkSubmit(){
if(checkSubmitFlg
==true){
return
false;
//当表单被提交过一次后checkSubmitFlg将变为true,根据判断将无法进行提交。
}
checkSubmitFlg
==true;
return
true;
}
<
/script
>
<
form
name=”form1”
method=”post”
onsubmit=”return
checkSubmit();”>
………..<
/form>
第二种方法:
在onsubmit事件中设置,在第一次提交后使提交按钮失效,代码如下:
<form
action=”about:blank”
method=”post”
onsubmit
=”getElementById(‘submitInput').disabled=true;return
true;”
target=”_blank”>
<input
type=”submit”
id=”submitInput”/>
</form>
<script
Language='JavaScript'>
function
formsubmit()
{
Today
=
new
Date();
var
NowHour
=
Today.getHours();
var
NowMinute
=
Today.getMinutes();
var
NowSecond
=
Today.getSeconds();
var
mysec
=
(NowHour*3600)+(NowMinute*60)+NowSecond;
if((mysec-document.formsubmitf.mypretime.value)>600)
//600只是一个时间值,就是5分钟内禁止重复提交,值随你高兴设
{
document.formsubmitf.mypretime.value=mysec;
}
else
{
alert('
按一次就够了,请勿重复提交!请耐心等待!谢谢合作!');
return
false;
}
document.forms.formsubmitf.submit();
}
</script>
</HEAD>
<BODY
BGCOLOR="#FFFFFF">
<form
name=formsubmitf
id
="the"
method="post"
action="XXX.asp">
<input
type=hidden
name='mypretime'
value='0'>
//这句不能少,用隐含变量传递一个时间初值
//这里是你要提交的内容
<input
type="button"
value="写好了"
name="button1"
class="4round"
onclick='formsubmit()'>
<font
class="red">(请按一次,耐心等待!)</font>
<input
type="reset"
value="重
写"
name="button2"
class="4round">
</form>
望采纳!
㈣ js如何实现禁止重复提交表单
很简单的 点击提交表单这个按钮后 在提交表单的js事件里 把按钮冻结了 这是内最简单的方法
冻结表单,容就是把disable属性设置成true就行了
用的是手机 不是电脑 不太方便给你完整代码 不明白的问我
㈤ js 怎样防止 刷新重复提交
1、用 javascript 设置一个变量,只允许提交一次;
参考如下:
<script type="text/javascript">
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>
㈥ vue.js怎样解决按钮多次点击重复提交
建议使用ref,给button添加注册ref引用,然后在表单提交的时候,获取button按钮,使其disable置灰。
ref被用来内给元素容或子组件注册引用信息。引用信息将会注册在父组件的$refs对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件。
<divid="app">
<buttonref="mybutton"type="primary"@click="save">保存</button>
</div>
<script>
newVue({
el:"#app",
data:{
},
methods:{
save(){
this.$refs.mybutton.disabled=true;
}
}
})
</script>
<style>
:disabled{
border:1pxsolid#DDD;
background-color:#F5F5F5;
color:#ACA899;
}
</style>