将JSON对象存储在全局可访问的数组中

时间:2015-11-29 22:18:32

标签: javascript jquery arrays json getjson

我正在尝试构建一个在全局范围内存储JS对象数组的函数(我想从外部Prototype函数访问它)。但是,当我尝试返回'build'数组时,数组是未定义的(这可能是因为我需要一个合适的回调函数)。

如何以正确的方式实现这一目标?

function getMyJson(url){
    var request = $.getJSON(url);
    var items = [];

    request.done(function(response) {
        for (var key in response) {
            if (response.hasOwnProperty(key)) {
                var object = {
                    name: response[key].name,
                    id: response[key].id
                }

                items.push(object);
            }
        }

    });

    return items; // This returns 'undefined', probally because the for loop is still running
}

var data = getMyJson('data.json');
console.log(data); // undefined

提前致谢

1 个答案:

答案 0 :(得分:0)

正如其他人所说,回调是可行的方法。

function getMyJson(url, callback){
    var request = $.getJSON(url);
    var items = [];

    request.done(function(response) {
        for (var key in response) {
            if (response.hasOwnProperty(key)) {
                var object = {
                    name: response[key].name,
                    id: response[key].id
                }

                items.push(object);
            }
        }

        callback(items);

    });

}

var data = getMyJson('data.json', function(items){

    //items will be defined here.
});