从另一个函数中的ajax函数访问数据

时间:2017-01-19 04:01:02

标签: javascript jquery ajax scope global-variables

我的MWE data.js看起来像这样:

var data = [];
function initdata(){
    $.ajax({
        ...
        success: function(data){
            data.push("test");
        },
        ...
    });
}
$(document).ready(function(){
    initdata();
    console.log(data.length);
    console.log(data[0]);
}

但是控制台说,data.length0data[0]undefined。如何从另一个函数中的ajax函数访问数据?

1 个答案:

答案 0 :(得分:2)

$.ajax()是异步的,所以当它完成请求并运行data.push('test')时,console.log(data.length)已经完成。
解决此问题的方法是使用回调:

function initdata(callback) {
    $.ajax({
        ...
        success: function(result) { // or just success: callback,
            callback(result);
        }
    });
}
$(document).ready(function() {
    initdata(function(data) {
        console.log(data.length);
        console.log(data[0]);
    });
}