【发布时间】:2018-08-06 22:14:32
【问题描述】:
我不是 js 新手,但是 jquery get 方法有一个愚蠢的问题,它不能更改全局变量,我不知道为什么?
function getData(data) {
re=null;
$.get("http://example.com/api.php",{ d:data}).done(function(result){
re = true;
}).fail(function(){
re = false;
});
console.log(re);
return re;
}
如果您看到console,它仍然是null!
有什么想法吗?
更新:
我的问题不在于console.log(),实际上问题是我不能像这样存储和返回值:
alert(getData(data));
这仍然返回 null。
【问题讨论】:
-
这是因为当您调用
console.log时,get调用还没有结束。您必须将console.log放入done和fail回调中。 -
ajax 是异步的,你可以 console.log(re) 在你的 done 或 fail 回调中
-
@xianshenglu 我要返回值
-
你不能因为 AJAX 调用是异步的。您需要改用回调模式。请参阅我标记的副本以获取更多信息
-
@Rory McCrossan 谢谢你提到另一个问题,但我认为我的问题有点不同,我想将
callback()的结果存储在像re这样的全局变量中。你能帮我解决这个问题还是重新打开问题来更新它?
标签: javascript jquery get xmlhttprequest return