使用jquery解析JSON

Mik*_*war 4 jquery json

我正在尝试解析一个简单的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,textdata我原来的网页变量它不工作:

var json = $.getJSON("week_13.json");
var text = json.responseText;
var data = $.parseJSON(json);
Run Code Online (Sandbox Code Playgroud)

在这种情况下text是一个空字符串.

我完全糊涂了.如果有人能让我知道我做错了什么,并就如何使这项工作给出一些指示,我会非常高兴!如果有任何其他有关我如何处理这方面的信息,请告诉我们回答这个问题!

Kim*_*ard 8

$.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)