我正在创建一个函数来读取不同的 JSON 文件。问题是当我尝试传递数组时。 一旦我回到我的主要功能,我就会一直得到“未定义”。 读取文件有效,但当我尝试使用变量时,我得到“未定义”。 我需要一些帮助。谢谢。
这是我读取的“data.json”文件:
[
{
"code":"10000",
"name":"new",
"filter":"Office",
"label":"NEW"
},
{
"code":"10001",
"name":"classic",
"filter":"Office",
"label":"CLASSIC"
},
{
"code":"10002",
"name":"old",
"filter":"Office",
"label":"OLD"
}
]
这是我的代码:
function readfile(myfile) {
var mydata;
$.get(myfile, function (data) {
mydata = JSON.parse(data);
console.log(mydata); // result ok
});
console.log(mydata); // undefined
return (mydata); // return 'undefined'
}
var content = readfile('data.json'); //should be an array
console.log(content); // undefined
最佳答案
你快到了!
jQuery $.get()
方法是一个异步调用。这意味着代码不会发出获取 myfile
的请求,等待它完成,然后从那里继续,代码将发出请求并在请求在后台完成时继续。
您可以在这里做两件事。
你可以做的第一件事就是像这样简单地将你的逻辑移动到回调函数中
$.get(myfile, function (data) {
mydata = JSON.parse(data);
console.log(mydata); // do whatever you need
});
但是,如果您想继续使用 readfile
方法,您可以使 $.get 请求同步,等待响应,然后从中返回。
像这样:
function readfile(myfile) {
var mydata;
$.get({
url: myfile,
async: false,
success: function(data) {
mydata = data;
}
});
return mydata;
}
关于javascript - 函数读取不传递给变量的 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58845539/