繁体   English   中英

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

[英]How can I pass data read from a JSON file to the rest of my Javascript code?

我是脚本和网络领域的新手,并且一直在尝试解决我遇到的一个问题。 我正在从本地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]);

最后一行返回undefined。 如果要在for循环之后立即编写该行,它将返回所需的值。 JSON文件的结构如下:

{
  "nodes":[
    {
      "name":"John"
    },

    ...

    {
      "name":"Joe"
    }
  ]
}

任何帮助将不胜感激-谢谢!

编辑:最后一件事,似乎最后一行(console.log(...))在$ .getJSON位之前执行,这也使我感到困惑。

$.getJSON异步运行。 传递给它的函数是“回调”,这意味着当getJSON从执行其操作返回时将被调用。

如果要对返回的JSON数据执行某些操作,则必须等待回调执行。

另外, $.parseJSON(JSON.stringify(data))$.parseJSON(JSON.stringify(data))是多余的。 data对象已经是一个可以完美使用的对象,并且其中包含有数据,但是您正在将该对象转换为JSON字符串,然后立即转换为对象。 只需按原样使用data 有关更多信息,请查看jQuery API文档中的getJSON

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM