问题描述
|
为什么不起作用?
var myData;
function getData()
{
$.ajax(
{
url: dataURL,success: function(data)
{
myData = data;
}
}
);
}
getData();
console.log(myData);
我正确地确定了变量的范围,但是我无法在函数外部使用数据。
解决方法
AJAX是异步的。当您运行代码时,它在后台运行。因此,当您调用
console.log(myData);
时,AJAX调用尚未完成,因此未设置变量。
您应该使用回调函数来处理数据,如下所示:
function getData(){
$.ajax({
url: dataURL,success: function(data){
console.log(data);
}
});
}
getData();
,ajax异步工作(您可以使其同步,但这通常不是您想要的)。这意味着您定义的成功回调仅在响应来自服务器后才触发。将log语句放入成功回调中。
,使用async: false
var myData;
function getData()
{
$.ajax(
{
url: dataURL,async: false,success: function(data)
{
myData = data;
}
}
);
}
getData();
console.log(myData);