JQuery Ajax 回调函数为全局变量赋值(jquery的ajax怎么发送参数)

背景


  如题,在使用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。
注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。


解决方案


  可以有两种解决方案: