JQuery Ajax 回调函数为全局变量赋值

☆ B/S 同时被 2 个专栏收录
19 篇文章 0 订阅
背景


  如题,在使用Echarts的地图时,需要为图表填充数据。但是如果写在success的回调函数中,代码很长并且有大量重复,显然不是正确的打开方式。因此定义了一个外部变量,使用Ajax请求数据,然后在success中为变量赋值。

var result;
$.ajax({
    url:'getDeclareInfo.json',
    type:'POST',
    data : {'strCondition' : condition},
    success:function(data){ 
            result = data;
            }
});


  但是运行结果和我预想中的并不一样,浏览器提示 result is undefined,data的值没有赋给result。后来发现因为发送的是异步请求,浏览器不会等待请求结果,而是顺序执行JS,所以当执行到使用result时会提示 result is undefined。

async
类型:Boolean
默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。
注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。


解决方案


  可以有两种解决方案:

  • 在 success 回调函数中添加显示地图方法,这样代码会很长,并且大部分重复,不利于后期的维护和拓展。

  • 设置 async 为 false,发送同步请求,可以实现全局变量的赋值。不过这样也就失去了使用 Ajax 的意义。

  • 1
    点赞
  • 8
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值