我正在尝试读取一个较大的本地.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对象中进行操作,而不限于任何范围。
谢谢!
答案 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);