尝试加载本地 json 文件,但无法在外部范围内读取它



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

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

但是,当我将 console.log(( 放在函数之外时,如下所示,我在控制台中返回"undefined",并在尝试使用 "dataset" 变量时在其他地方收到错误。

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

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

谢谢!

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

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

相关内容

最新更新