在getJSON jquery函数中将解析器作为属性

时间:2011-08-04 15:03:40

标签: jquery json getjson

函数 cue.getCueAsSource(); 为我提供了一个漂亮而干净的JSON文件,如下所示:

{
"A" :
    {
        "B" : [{"value" : "brunos homepage" , "type" : "literal"}]
    }
}

我需要将该输出放在getJSON函数的第一个参数中,这样我就可以从该JSON文件中获取所需的任何数据。因为它不会接受函数作为参数,所以我将它放在一个变量中,因为它是一个字符串(我预感到它有问题)。

var cueText = cue.getCueAsSource();

$.getJSON(cueText, function(json) {
    $('#meta').html('<p>Title: ' + json.A.B[0].value + '</p>');
});

但它在firebug中抛出了这个错误:

GET { "A" : { "B" : [{"value" : "brunos homepage" , "type" : "literal"}] } }
500 Internal Server Error

有什么问题?有没有其他方法将json输出从某个函数放入getJSON函数?非常感谢。试。

1 个答案:

答案 0 :(得分:2)

您不希望$.getJSON()这样做。 $.getJSON()$.ajax()的别名,用于从服务器检索JSON格式的数据,并在将其提供给您之前将其预先解析为对象。

显然,您已经有了一个JSON字符串,只需要解析它。使用:

var cueText = cue.getCueAsSource();
var cueObject = JSON.parse( cueText );
$('#meta').html('<p>Title: ' + cueObject.A.B[0].value + '</p>');

除IE之外的所有浏览器都内置了标准的JSON API。对于IE,downalod Crockford's json2.js并将其包含在您的页面上。如果存在标准API就足够聪明,如果不存在则提供它。我更喜欢将它包含在jQuery之前,以便jQuery总是使用标准API。