Объект доступа JSON, возвращающий неопределенное - PullRequest
0 голосов
/ 12 июля 2011

Я работаю с JSON через jQuery, и мне показалось, что я делал это правильно, но я получаю неопределенное значение.

Если мой 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".
});

Может кто-нибудь указать мне правильное направление?Я знаю, что я хочу сделать, я просто не совсем уверен, чего мне не хватает.

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Нет ничего плохого в том, что ваш JSON или код обращаются к свойствам полученного десериализованного объекта. Живой пример. Однако эта строка:

$("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 элементов для обновления!

1 голос
/ 12 июля 2011

сделать это, чтобы увидеть проблему:

$.getJSON(urlOfMyJSON, null, function(json){
   alert(json.toSource());
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...