0

ファイル json をロードし、questions という配列を作成する次のコードがあります。
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
4

1 に答える 1

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();
});
于 2013-02-17T02:37:11.693 に答える