外部获取ajax内部,如何在函数外部获取ajax的返回值?

问题:今天在开发的过程中,遇到一个小问题,就是在将ajax获取数据部分的代码封装在函数内,将ajax获取的值作为函数的返回值。

抱着爱钻研的精神,最终得到了解决方案,在这里整理出来方便以后查阅。

尝试1:同步调用,直接在ajax函数中return值

function getAjax(){

var result = 1;

$.ajax({

url : ‘test.php‘,

type : "post",

data : {},

async : false,

success : function(data) {

return 2;

}

});

return result;

}

--结果:失败,返回 1。

--分析原因:ajax内部是一个或多个定义的函数,ajax中return返回值,返回到ajax定义函数,而不是返回到ajax外层的函数getAjax

***************************************************************************************************************

尝试2:异步调用,将ajax获取的值赋值给全局变量,将全局变量返回

function getAjax(){

var result = 1;

$.ajax({

url : ‘test.php‘,

type : "post",

data : {},

async : true,

success : function(data) {

result = 2;

}

});

return result;

}

--结果:失败,返回 1。

--分析原因:ajax请求和后面的return result语句异步执行,导致return result比result = 2先执行并返回result的值

***************************************************************************************************************

正确打开方式:同步调用,且ajax获取值后对全局变量赋值,最后将全局变量return

function getAjax(){

var result = 1;

$.ajax({

url : ‘test.php‘,

type : "post",

data : {},

async : false,

success : function(data) {

result = 2;

}

});

return result;

}

--结果:返回 2。成功获取返回值

--成功原因:因为加了同步阻塞,先执行result = 2;再往下执行return result;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值