jQuery - анализ данных JSON - Проблемы с именем переменной

StackOverflow https://stackoverflow.com/questions/1231447

Вопрос

Мой первый опыт работы с данными JSON. У меня есть небольшой опыт использования JQuery.

Я пишу по этому URL (tumblr api): jyoseph.com/api/read/json

То, что я пытаюсь сделать, это вывести json, который возвращается. Что у меня так далеко:

$(document).ready(function(){ 

$.getJSON("http://jyoseph.com/api/read/json?callback=?", 
  function(data) { 
    //console.log(data); 
    console.log(data.posts);         

      $.each(data.posts, function(i,posts){ 
        var id = this.id; 
        var type = this.type; 
        var date = this.date; 
        var url = this.url; 
        var photo500 = this.photo-url-500; 

        $('ul').append('<li> ' +id+ ' - ' +type+ ' - ' +date+ ' - ' +url+ ' - ' +photo500+ ' - ' + ' </li>'); 
      }); 

  }); 

});

Смотрите мой пост jsbin для всего скрипта: http://jsbin.com/utaju/edit

Некоторые ключи от Tumblr имеют " - " дефисы в них, и это, кажется, вызывает проблемы. Как вы можете видеть " photo-url-500 " или другой «фото-заголовок»; вызывает сбой скрипта, выводит NaN.

Есть ли проблема с дефисами в именах ключей? Или я все об этом говорю не так?

Это было полезно?

Решение

Если в именах есть тире, вам нужно получить к ним доступ по-разному. Замените var photo500 = this.photo-url-500; на var photo500 = this [" photo-url-500 "]; .

Другие советы

Обратите внимание, что лучше не добавлять внутри каждой итерации. Лучше добавить в строку или вставить в массив, а затем добавить один раз после завершения итератора. Присоединиться к дому дорого.

Используйте нотацию с скобками для доступа к участникам.

var photo500 = this['photo-url-500']; 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top