jQuery ajax数据可用性

问题描述

| 为什么不起作用?
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);