我不是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。
答案 0 :(得分:1)
这是因为$ .get是一个异步调用,当 re 变量重新分配一个新值时,console.log正在执行。
调用异步函数getData(data)时可以使用回调函数。
function getData(data,callback) {
$.get("http://example.com/api.php",{ d:data}).done(function(result){
callback(true)
}).fail(function(){
callback(false);
});
}
//call it with your data and callback function
getData(data, function(response){
console.log(response); // this will contain true or false as returned from your getData function.
})
我希望这会有所帮助。