$.ajax防止多次点击重复提交的方法
第一种:使用$.ajaxPrefilter( [dataTypes], handler(options, originalOptions, jqXHR) ) 方法:
$.ajaxPrefilter()方法 :是对全局所有的ajax请求有效,在所有的ajax请求之前,会对每一个请求统一做一些处理,可以去设置ajax的选项,也可以对现有的ajax选项进行更改;接收两个参数:
dataTypes :可选参数,一个可选的字符串,其中包含一个或多个空格分隔的数据类型;
handler(options, originalOptions, jqXHR):一个函数,接收三个参数。
各个参数的含义:
options : 是请求的选项,包括accepts、crossdomain、contentType、url、async、type、headers、error、dataType等许多参数选项
originalOptions : 值作为提供给Ajax方法未经修改的选项,因此,没有ajaxSettings设置中的默认值
jqXHR :就是经过jquery封装的XMLHttpRequest对象(保留了其本身的属性和方法)
代码如下:
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
if ( options.abortOnRetry ) {
if ( currentRequests[ options.url ] ) {
currentRequests[ options.url ].abort();
}
currentRequests[ options.url ] = jqXHR;
}
});
第二种:使用beforeSend选项,在发送请求前将提交按钮变为不可用的状态;
上面的第一种方法是针对所有的ajax请求,而这一种针对的是单个的请求;
在点击过一次提交后,在提交完成前都将提交按钮不可用,这样就避免掉了重复点击的问题
$.ajax({
url:'testurl',
beforeSend:function(){
$('.submit').attr('onclick','javascript:void();');
},
success:function(data){
$('.submit').removeAttr('onclick')
},
error:function(){
$('.submit').removeAttr('onclick')
}
})本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!