ajax请求url后的返回的数据,javascript如何从异步请求中返回数据

今天写了一个Ajax请求函数。但是在返回数据那里出现了错误,我试图从success回调中获取返回的数据,并将该数据分配给函数内的一个局部变量,然后return返回这个变量的值,但最后没有任何值返回。

代码如下:

function foo() {

var result;

$.ajax({

url: '...',

success: function(response) {

result = response;

// return response; //

}

});

return result;

}

var result = foo(); // It always ends up being `undefined`.

问题出在哪里?

首先我们必须了解AJAX中的异步和同步。

同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。

而异步则这个AJAX代码运行中的时候其他代码一样可以运行。

知道了AJAX的异步和同步的区别,相信以上问题就会迎刃而解。

因为上面我写的代码使用了jquery的ajax函数,而ajax函数默认使用异步发送请求,所以当运行AJAX请求代码时, 页面没有假死,而是继续执行下面的下面的代码,因此result变量什么值也没有。

如果要将AJAX请求的数据赋值给result,并返回result值,我们必须使用AHAX同步请求,代码如下:

function foo() {

var result;

$.ajax({

url: '...',

async: false,

success: function(response) {

result = response;

// return response; //

}

});

return result;

}

从上面代码可以看出async: false用于设置Ajax请求是否为异步,false表示同步,true表示异步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值