首页 > 解决方案 > 尝试加载本地 json 文件,但无法在外部范围内读取它

问题描述

我正在尝试读取要在我正在测试的代码中操作的大型本地 .json 文件。下面的代码片段将其加载,并将其返回到我的控制台。

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 对象中进行操作,不限于任何范围。

谢谢!

标签: javascriptjqueryjson

解决方案


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

但是 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);

推荐阅读