我有下一个加载文件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
答案 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();
});