Ajax函数内调用异步方法获数据,无法及时获取到赋值给返回值 || 不使用缓存结果

js默认是异步的,比如下载3张图片,你点击产生这个指令,但图片下载完可能是2秒之后,“下载完成”的提示消息也是在之后发送给你,相当于多线程

也就是你写了个函数,在里面请求一组数据,并尝试返回值,可能你函数走完了,请求的数据才拿到

比如:

 

 

解决方法:

用ajax,把同步设置成异步,再继续,就会走完这个再走下一步了

 $.ajax({
        url: '../static/json/all_xm.json',
        type: 'GET',
        dataType: "json",
        async: false,//将异步设置为同步
        success: function (result) {
            datas = result['所有消费项目'];
            alert(datas[0]);
        },
        error: function (xhr, status, error) {
            alert("请求出错:" + xhr.status + "," + xhr.responseText);
        },
        complete: function (xhr, status) {
            alert("Complete");
        }
    });  

--------------同事妹子做了导出,结果方法直接用浏览器里的缓存,可用此解决--------------------------------------------------------------

在服务端声明浏览器不要缓存结果

[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]

 

在浏览器声明不使用缓存结果:

$.ajax({
    cache: false
    //rest of your ajax setup
});

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值