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

上面分别是两个ajax请求得到的数据其中,数据的关联性为:上段数据的varName 等于下段数据的variableName! 现在我需要将这些数据合并到一个div并将值放入到input便签: 1. 将Ajax得到的data数据赋给全局变量 首先自定义一个空的全局变量值: 然后处理ajax请求: 关键一点就是讲ajax的异步加载关闭,更改为同步加... jQuery 回调函数是指在特定的事件或条件触发时,执行的函数。例如,在 jQueryAJAX 函数中,我们可以设置回调函数,在服务器完成响应后执行。例如,在下面的代码中,我们将回调函数作为参数传递给 jQuery 的。回调函数通常作为参数传递给其他函数,然后在特定的事件触发时被调用。在这个例子中,当服务器完成响应后,回调函数就会被执行。 先来看一代码ajaxfunctioncheckoldpass($pass){$.ajax({type:'get',url:'/admin/check',data:{'password':$pass},dataType:'json',success:function(data){console.log(data)}});console.log(123);}这个运行结果是:json... 需将ajax设置为同步操作,则会先给变量赋值再走后面的代码。 var err=0 $.ajax({ url: 'http://www.xjpattern.com/index.php/Home/Login/login', async: false, type: "post", dataType: " jQuery 中,会遇到$.get(url,data,callback,type) 或 $.post(url,data,callback,type) 返回值给全局变量赋值的问题: <script language="JavaScript"> var count= 1; $.post("<%=path%>/AdminCenter/SysFunction/GetOrderNo",       { parentCode: pc }, 我们在用JQueryAjax从后台提取数据后想把它赋值全局变量,但是却怎么都赋不进,为什么呢? 原因其实很简单,我们用的Ajax是异步操作,也就是说在你赋值的时候数据还没提取出来,你当然赋不进去,所以只要改成同步操作就行~ 方法1:先设置同步在进行Ajax操作 ? //在全局或某个需要的函数内设置Ajax异步为false,也就是同步 $.ajaxSetup({ async... 在我们写项目的过程中,难免会用到Ajax的异步提交。那么有时候的需求可能是这样的。 我们想把回调函数的data中的值赋值给外部定义的变量,但往往可能发现根本就没有赋值。 //创建一个flag变量 var flag=&quot;&quot;; $.ajax( url:&quot;请求的url地址&quot;, dataType:&quot;返回的数据格式&quot;, data:{参数}, success:function(data){ 1、回调函数给变量赋值 function removeByAppId(leftValue){ var strSource = flowfrm.iamFlowsScope.value; DWREngine.setAsync(false); flowDefAJAX.removeByAppId(leftValue,strSource,callBackFun)... 我正在创建一个新的功能,我在其中根据从Ajax返回的Json数据构建网格。我决定将这个功能封装在一个函数中,所以当我添加/更新/删除时,我可以成功检索到一个新的数据表示。我遇到的问题是我想填充一个全局数组,但是一旦我的使用AJAX的函数结束,我有一个数组,但没有数据。当所有的代码都在AJAX调用中时,这不是问题,但是一旦我尝试将它分离到它自己的函数中,它就不能按预期工作。var DataArray...