猿问

急求!!!!如何防止用户在ajax请求没有成功之前,点击按钮再次调用ajax?怎么回事哈啊?

假设我现在有几个用li标签做的按钮,还有时间控件和下拉框。li的点击操作、时间控件的选择时间操作、下拉框的change事件都用调用同一个ajax。请问,如何在用户做某一种操作调用ajax请求成功之前,阻止用户再次点击其它标签进行ajax请求操作?
慕容森
浏览 290回答 2
2回答

犯罪嫌疑人X

例子如下,第一种是拦截重复请求,第二种每次请求都接受同时丢弃旧请求。如果是拦截重复请求,通常还要给按钮加上disabled状态切换。//方法一,通过加载状态判断//默认值varloading;functionajaxload(){//先判断,为true就拦截if(loading===true){alert('loading...trylater.');returnfalse;}//发出请求之前先设置状态trueloading=true;$.ajax({url:'test.html'}).done(function(){alert('done!');//完成后设为falseloading=false;});}//方法二,有新请求直接丢弃旧请求varxhr;functionajaxload(){//之前如果有未完成的请求直接丢弃//这是字面意思的丢弃,只是客户端丢弃请求//在这之前服务器如果收到了请求还是会返回结果的//只是客户端不再理会服务器的响应而已if(xhr&&xhr.readyState!=4){xhr.abort();}xhr=$.ajax({url:'test.html'}).done(function(){alert('done!');});}

侃侃尔雅

你可以给把那些标签归个类,额外添加两个属性,一个类似组的标志,比如可以添加一个空属性的class属性用于组名,再一个类似开关的标志,比如处于请求的标签多了on的属性,当要发生请求的时候,看组内有没有on属性开关处于开的状态即可,此种实行只要基于jquery的contains选择器就可以。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答