如何将从JSON文件读取的数据传递到Javascript代码的其余部分?

如何将从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

我是脚本和网络世界的新手,一直在努力解决我遇到的一个问题。我正在从本地JSON文件读取数据,并且已经能够成功地使用jQuery.getJSON和jQuery.parseJSON,但是我尝试在getJSON回调函数之外使用数据,并且遇到了问题。我想这归结于我没有完全理解正确的方法,这就是我寻求你帮助的地方。这是我的密码:

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"
    }
  ]
}