【问题标题】:Trying to load local json file, but can't read it in external scope尝试加载本地 json 文件,但无法在外部范围内读取它
【发布时间】:2018-09-29 21:15:18
【问题描述】:

我正在尝试读取一个大型本地 .json 文件,以便在我正在测试的代码中进行操作。下面的 sn-p 加载它,并将其返回到我的控制台。

var dataset;

$.getJSON("data.json", function(json) {
 dataset = json.rows;
 console.log(dataset);
});

但是,当我将 console.log() 放在函数之外 时,如下所示,我在控制台中返回“未定义”,并在尝试使用“数据集”时在其他地方收到错误变量。

var dataset;

$.getJSON("data.json", function(json) {
 dataset = json.rows;
});

console.log(dataset);

JavaScript 新手,但我认为如果外部变量是在函数外部声明的,您可以更改它吗?是否有 jquery 或我缺少的特定功能?目标是将 json 的行加载到 JavaScript 对象中进行操作,不限于任何范围。

谢谢!

【问题讨论】:

    标签: javascript jquery json


    【解决方案1】:

    如果外部变量是在函数外部声明的,那么您是正确的。

    但是jQuery函数getJSON默认是一个异步函数,这意味着当console.log(dataset);被调用时,dataset变量仍然是undefined

    如果您要将console.log(dataset); 切换为setInterval(console.log(dataset), 5000);。 它可能会起作用,但它现在依赖于它总是花费少于或等于 5 秒的假设。

    您可以通过将全局 ajax 配置设置为禁用异步来解决此问题。

    此代码应该可以按您的意愿工作:

    // Switch to synchronous functions.
    $.ajaxSetup({ async: false });
    
    var dataset;
    
    $.getJSON("data.json", function(json) {
     dataset = json.rows;
    });
    
    console.log(dataset);
    

    【讨论】:

    • 谢谢,看来是这样了!
    猜你喜欢
    • 2021-09-19
    • 2021-07-27
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    相关资源
    最近更新 更多