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

时间:2013-06-08 04:55:58

标签: javascript jquery json

我是脚本和网络世界的新手,并且一直在努力解决我一直遇到的问题。我正在从本地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位之前执行,这也使我感到困惑。

1 个答案:

答案 0 :(得分:1)

$.getJSON以异步方式运行。传递给它的函数是一个“回调函数”,这意味着当getJSON从做它的事情回来时它会被调用。

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

另外,在旁注中,$.parseJSON(JSON.stringify(data))是多余的。 data对象已经是一个完全可用的对象,其中包含数据,但是您将该对象转换回JSON字符串,然后立即返回到对象中。只需按原样使用data即可。有关更多信息,请查看jQuery API docs for getJSON