今天写了一个Ajax请求函数。但是在返回数据那里出现了错误,我试图从success回调中获取返回的数据,并将该数据分配给函数内的一个局部变量,然后return返回这个变量的值,但最后没有任何值返回。
代码如下:
function foo() {
var result;
$.ajax({
url: \'...\',
success: function(response) {
result = response;
// return response; // <- I tried that one as well
}
});
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; // <- I tried that one as well
}
});
return result;
}
从上面代码可以看出async: false用于设置Ajax请求是否为异步,false表示同步,true表示异步。
继续阅读与本文标签相同的文章
-
健乐教学机器人可开展的教学实训内容
2026-05-14栏目: 教程
-
5G套餐曝光遭“吐槽”,iphone11受追捧,导致苹果11销量比较高
2026-05-14栏目: 教程
-
为什么修电脑的叫自己不要杀毒和清理垃圾?
2026-05-14栏目: 教程
-
当水乡建筑遇上机器人,成就乌镇又一网红景点
2026-05-14栏目: 教程
-
惊险!手刹失灵,郴州一货车开启“无人驾驶”模式……
2026-05-14栏目: 教程
