我正在尝试读取一个大型本地.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);