如何将从JSON文件读取的数据传递到Javascript代码的其余部分?
我是脚本和网络世界的新手,一直在努力解决我遇到的一个问题。我正在从本地JSON文件读取数据,并且已经能够成功地使用jQuery.getJSON和jQuery.parseJSON,但是我尝试在getJSON回调函数之外使用数据,并且遇到了问题。我想这归结于我没有完全理解正确的方法,这就是我寻求你帮助的地方。这是我的密码:如何将从JSON文件读取的数据传递到Javascript代码的其余部分?,javascript,jquery,json,Javascript,Jquery,Json,我是脚本和网络世界的新手,一直在努力解决我遇到的一个问题。我正在从本地JSON文件读取数据,并且已经能够成功地使用jQuery.getJSON和jQuery.parseJSON,但是我尝试在getJSON回调函数之外使用数据,并且遇到了问题。我想这归结于我没有完全理解正确的方法,这就是我寻求你帮助的地方。这是我的密码: var names = new Array(); $.getJSON('ferries.json', function(data) { var jsondata = $.p
var names = new Array();
$.getJSON('ferries.json', function(data) {
var jsondata = $.parseJSON(JSON.stringify(data));
var length = jsondata.nodes.length;
for (var i = 0; i < length; i++) {
names[i] = String(jsondata.nodes[i].name);
}
});
console.log('Names: ' + names[0]);
任何帮助都将不胜感激-谢谢
编辑:最后一件事,似乎最后一行(console.log(…)在$.getJSON位之前执行,这也让我感到困惑。
$.getJSON
异步运行。传递给它的函数是一个“回调”,这意味着当getJSON
完成它的工作后返回时,会调用它
如果您想处理返回的JSON数据,必须等待回调执行
另外,另一方面,
$.parseJSON(JSON.stringify(data))
是多余的。data
对象已经是一个完全可用的对象,其中包含您的数据,但是您正在将该对象转换回JSON字符串,然后立即转换回对象。只需按原样使用数据
。有关更多信息,请查看 若要获取名称数组,请尝试以下名称:names.push(jsondata.nodes[i].name);谢谢你的旁注——当你这样解释的时候,这很有意义。至于等待回调执行,我如何在代码中实现这一点?您已经在等待getJSON
执行回调以设置names
数组中的值。无论您还需要做什么,都可以在回调中执行,或者调用另一个回调函数来执行。对于更复杂的场景,请阅读jQuery的延迟对象。getJSON
的文档页面提到了它。
{
"nodes":[
{
"name":"John"
},
...
{
"name":"Joe"
}
]
}