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

来源:互联网 发布:阿里云代理加盟 编辑:程序博客网 时间:2024/06/01 09:42
背景


  如题,在使用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 的意义。

原创粉丝点击