javascript - 函数读取不传递给变量的 JSON 数据

标签 javascript jquery html json

我正在创建一个函数来读取不同的 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/

相关文章:

css - 使用 HTML5 为现代浏览器嵌入 Flash 的最佳方式?

javascript - 是否可以在特定条件下注册点击事件?

javascript - 在大量渲染/计算期间卡住后如何防止滚动位置跳跃?

javascript - 使用JQuery将内容加载到外部html页面的div中

javascript - 从父 div 内的左侧隐藏 div 滑入(多个具有相同类的 div)

javascript - 隔离 iframe session

javascript - 从页面禁用浏览器打印选项(页眉、页脚、边距)?

javascript - 连接到数据库时不显示 Google map

javascript - 按 T​​ab 键进入某个输入字段时显示 div

html - 下拉菜单选项卡在 VS2010 上不起作用