开发者

JSON object accessor returning undefined

I'm working with some JSON through jQuery, and thoug开发者_如何学Cht I was doing it correctly, but I keep getting undefined.

If my JSON is organized like so:

{ "item1" : "answer",
  "name" : "something",
  "title" : "your title",
  "favorites" : [ { 
      "color" : "blue",
      "season" : "winter",
      "sport" : "baseball"
      },
      { ... more favorite objects ... }]
}

Then I call it with

$.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".
});

Can anyone please point me in the right direction? I know what I want to do, I'm just not quite sure what I'm missing.

Thank you!


There's nothing wrong with your JSON or the code accessing the properties of the resulting deserialized object. Live example. However, this line:

$("h3").append(json.favorites);

Doesn't make much sense. You're asking jQuery to take this array:

[
    { 
        "color" : "blue",
        "season" : "winter",
        "sport" : "baseball"
    }
]

...and append it to all of the h3 elements on your page. jQuery will use toString on that, as it's not a DOM element or jQuery instance, and the toString will presumably come back [object Object] or similar.

The next line, $("h4").append(json.favorites[0].color);, should work fine though, as the live link above demonstrates. Provided there are h4 elements on the page for it to update!


do that to see the problem:

$.getJSON(urlOfMyJSON, null, function(json){
   alert(json.toSource());
});
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜