为什么我的数组json是空的?

时间:2013-02-17 02:33:16

标签: javascript jquery arrays json

我有下一个加载文件json的代码,并创建一个名为问题的数组 如果我在getArray函数中执行console.log(JSON.stringify(questions))它可以正常工作,但是如果我在同一个外部执行它不起作用的功能,我试过用 alert(JSON.stringify(questions))和alert(questions.length)它返回[]和0,这是我的错误?

var questions = [];
function getArray(){
    $.getJSON('questions.json', function (json) {
        for (var key in json) {
            if (json.hasOwnProperty(key)) {
                var item = json[key]; 
                questions.push({
                    Category: item.Category
                });
            }
        }
        //console.log(JSON.stringify(questions)); //it works
           return questions;
    });
}
$(document).ready(function(){
getArray();
});

alert(JSON.stringify(questions)) //return []
alert(questions.length) //return 0

1 个答案:

答案 0 :(得分:3)

您不能使用return,因为它是异步的:

var callback = function(questions) {
    // Do something with questions here.
    alert(questions.length);
}

var questions = [];
function getArray(){
    $.getJSON('questions.json', function (json) {
        for (var key in json) {
            if (json.hasOwnProperty(key)) {
                var item = json[key]; 
                questions.push({
                    Category: item.Category
                });
            }
        }
        callback(questions);
    });
}
$(document).ready(function(){
getArray();
});