我正在尝试解析一个简单的JSON文件.我是javascript,JSON和jquery的新手.我想提取JSON文件中的信息,以便稍后使用protovis绘制它.我的JSON格式正确,并在JSON lint中验证.
我试图通过解析JSON对象的responseText来实现这一点,如下所示:
var json = $.getJSON("week_13.json").responseText;
var week13 = $.parseJSON(json);
Run Code Online (Sandbox Code Playgroud)
希望第13周是我可以访问的东西.请注意,我不打算在$.getJSON调用中使用回调函数,因为我只想访问变量,以便稍后可以绘制它们.
我正在使用Chrome及其控制台来试图找出正在发生的事情.在此代码中,变量json似乎是一个空字符串.但是,如果我在Chrome中的javascript控制台中写道:
var json = $.getJSON("week_13.json");
Run Code Online (Sandbox Code Playgroud)
json是一个XMLHttpRequest对象,它的responseText属性是一个包含我的JSON的大字符串.
var text = json.responseText;
Run Code Online (Sandbox Code Playgroud)
是一个很好的字符串然后如果我调用jquery的解析器
var data = $.parseJSON(text);
Run Code Online (Sandbox Code Playgroud)
那么data现在是我想要的对象.但是,如果我复制和粘贴我原来的两行到控制台我有没有运气,如果我使用扩展版本的一株json,text和data我原来的网页变量它不工作:
var json = $.getJSON("week_13.json");
var text = json.responseText;
var data = $.parseJSON(json);
Run Code Online (Sandbox Code Playgroud)
在这种情况下text是一个空字符串.
我完全糊涂了.如果有人能让我知道我做错了什么,并就如何使这项工作给出一些指示,我会非常高兴!如果有任何其他有关我如何处理这方面的信息,请告诉我们回答这个问题!
$.getJSON()是异步的.您需要提供回调函数来处理结果.有关回调函数的示例,请参阅API文档.
如果你真的需要你的同步调用(它会在你等待结果时阻止浏览器),那么你可以这样做:
var url = "week_13.json"
var data = jQuery.parseJSON(
jQuery.ajax({
url: url,
async: false,
dataType: 'json'
}).responseText
);
Run Code Online (Sandbox Code Playgroud)