我正在通过jQuery使用一些JSON,并认为我正确地做到了,但我一直都未定义。
如果我的JSON组织如下:
{ "item1" : "answer",
"name" : "something",
"title" : "your title",
"favorites" : [ {
"color" : "blue",
"season" : "winter",
"sport" : "baseball"
},
{ ... more favorite objects ... }]
}
然后我用
来调用它$.getJSON(urlOfMyJSON, null, function(json){
$("p").append(json.item1); // returns 'answer'
$("h3").append(json.favorites); // returns undefined
$("h4").append(json.favorites[0].color); // thought this should work; throws an error because undefined has no "color".
});
任何人都可以指出我正确的方向吗?我知道我想做什么,我只是不太确定我错过了什么。
谢谢!
答案 0 :(得分:1)
这样做可以看到问题:
$.getJSON(urlOfMyJSON, null, function(json){
alert(json.toSource());
});
答案 1 :(得分:1)
您的JSON或访问生成的反序列化对象属性的代码没有任何问题。 Live example.但是,这一行:
$("h3").append(json.favorites);
没有多大意义。你要求jQuery采用这个数组:
[
{
"color" : "blue",
"season" : "winter",
"sport" : "baseball"
}
]
...并将其附加到您网页上的所有h3
元素。 jQuery将使用toString
,因为它不是DOM元素或jQuery实例,toString
可能会返回[object Object]
或类似。
下一行$("h4").append(json.favorites[0].color);
应该可以正常工作,正如上面的实时链接所示。如果页面上有h4
个元素供其更新!