11 回答
TA贡献1780条经验 获得超5个赞
按照我的看法,上面的回答都不完美。
首先,异步会有延迟,假设第一个选项卡第一次请求还没完成,变量没赋值的时候,又触发一次第一个选项卡的异步请求,这时第一个选项卡会有两次异步请求,会被赋值两次!
第二,异步请求会有失败的情况,所以只判断请求过就不再请求,那么请求失败的就一直没数据。
所以,要这样子:
1.判断每个选项卡赋过值没,赋过不请求;
2.没赋过值的,要请求,但是要它取消之前的请求($.ajax()的abort()方法);
3.请求成功对选项卡进行赋值;
TA贡献1794条经验 获得超8个赞
核心就是 需要确认他是否已经请求过AJAX,如果请求过后,不然执行AJAX
1.JSON变量
var json={'a':flase,'b':false,'c':false};
a[0].click=function(){
if(json.a)return; //true 就不往下执行
//AJAX 请求后
a[0].click=json.a=ture; //已经执行 赋值为true
}
2.自定义属性判断
a[0].click=function(){
if($(this).attr('data-isClick'))return; //true 就不往下执行
//AJAX 请求后
$(this).attr('data-isClick','true'); //已经执行 赋值为true
}
TA贡献1828条经验 获得超3个赞
TA贡献1943条经验 获得超7个赞
弄个标志位不行么。。。
var data;
function tabA()
if(data){
return data;
}else{
data = ajax().fetch();
}
function tabB()
if(data){
return data;
}else{
data = ajax().fetch();
}
TA贡献1773条经验 获得超3个赞
定义config.dataA=[],config.dataB=[]数组,用于存储数据
在发送请求时判断点击相对应的dataA或dataB是否为空,如果为空则发送请求,在把请求的数据存储到相对应的dataA或dataB中,不为空则用dataA和dataB,就不用再请求数据;
TA贡献1906条经验 获得超10个赞
TA贡献1833条经验 获得超4个赞
第一次请求的时候,成功返回了数据就设置一个 var flag = true;
当再次点击选项卡要获取数据时先判断下flag是否为true,为ture则不再请求AJAX。
TA贡献1828条经验 获得超4个赞
TA贡献1859条经验 获得超6个赞
TA贡献1815条经验 获得超6个赞
添加回答
举报
