Javascript 如何更改jquery get方法中的全局变量?
我对js并不陌生,但jQueryGet方法有一个愚蠢的问题,它不能更改全局变量,我不知道为什么Javascript 如何更改jquery get方法中的全局变量?,javascript,jquery,get,xmlhttprequest,return,Javascript,Jquery,Get,Xmlhttprequest,Return,我对js并不陌生,但jQueryGet方法有一个愚蠢的问题,它不能更改全局变量,我不知道为什么 function getData(data) { re=null; $.get("http://example.com/api.php",{ d:data}).done(function(result){ re = true; }).fail(function(){ re = false; });
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.log(),实际上问题在于我不能像这样存储和返回值:
alert(getData(data));
这仍然返回null。这是因为$.get是一个异步调用,在重新分配re变量一个新值时,console.log正在执行 调用异步函数getData(data)时,可以使用回调函数
我希望这能有所帮助。这是因为在调用
console.log
时,get
调用尚未完成。您必须将console.log
放入done
和fail
回调中。ajax是异步的,您可以将console.log(re)放入done或fail中callback@xianshenglu我想返回您不能返回的值,因为AJAX调用是异步的。您需要改用回调模式。更多信息,请参见我标记的副本information@RoryMcCrossan感谢您提到另一个问题,但我认为我的问题有点不同,我想将callback()
的结果存储在一个全局变量中,如re
。你能帮我吗?或者重新打开问题来更新它?这不是答案。您只需解释问题谢谢您的回答,但这与放置console.log()
而不是callback()
相同。您能告诉我如何将响应
存储在像re
这样的全局变量中吗?
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.
})