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

时间:2018-09-29 21:15:19

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

谢谢!

1 个答案:

答案 0 :(得分: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);