关于ajax中async属性的值的问题

今天在写一个函数时,因为要和后台交互数据,就使用了jQuery的ajax,这里我使用的是mini UI的ajax,其实都一样。

原函数如下:

function queryAgain(){
   SLData.again = 'again';
   var json=nui.encode({params:SLData});
   var againData;
    nui.ajax({
        url: "com.vbm.fmis.gl.voucher.voucher.queryVoucherMain.biz.ext",
        type: 'POST',
        data:json,
        success: function (data) {
             againData = data.vos;
        },
        error: function (jqXHR, textStatus, errorThrown) {
            nui.alert(jqXHR.responseText);
        }
    }); 
    return againData;
}

这里仅仅就是查询获得自己需要的数据,然后要在另外一个function里用到这些数据,但是,最终的得到的数据 againData 总是undefined,确定后台已经查询出数据,一开始以为是逻辑流配置错误,再三检查,发现没有错误,始终搞不明白到底哪里出现问题,最终,在同事的帮助下,找到了原因。

原因:我们在利用ajax与后台交互时,有一个属性是async,它的值要么为true,要么为false,如果我们不写async,默认情况下,是true。async的意义在于请求是否异步或者同步,当async为true时,浏览器会执行两个线程,一个是ajax部分,另一个是

ajax后面的部分。而async为false的情况下,浏览器只有执行了ajax中的success部分,才会继续向下执行后面的操作。

导致:可以看到,我这里声明里一个变量 againData,我的本意是将后台数据赋值给 againData,然后进行返回,从而在另外一个函数那里调用这些数据。但是由于 我没有将async声明为false,浏览器会直接返回 againData,导致我return的数据总是undefined。

改为false此问题即可解决:

以后使用ajax时一定要提前想清楚自己的想法,抓住细节才可以成功!

2019-3-4更新,一个同样的错误犯的第二遍,看这里

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值