2013-10-26 3 views
0

У меня проблема с пониманием этой проблемы. У меня этот json в файле с именем list.json для тестирования. Я получу этот список, сгенерированный сервером позже.Создайте динамический вложенный список из JSON с помощью jQuery

[ 
{ 
    name : "ABC", 
    id  : "link_abc" 
}, 
{ 
    name : "DEF", 
    id  : "link_def" 
}, 
{ 
    name : "GHI", 
    id  : "link_ghi" 
}, 
{ 
    name : "JKL", 
    id  : "link_jkl" 
} 

] 

А вот мой Javascript для отображения списка в формате <li>.

$(function(generate_list_from_JSON){ 
$('a[href="#state"]').click(function(){ 
    $.getJSON("scripts/list.json", function (obj){ 
     $.each(obj.name, function (key, value){ 
      alert(key); 
      }) 
     }); 
    }); 
}); 

Проблема в том, что ничего не отображается, даже в консоли. Как мне ловить то, что отправляет и что получает? Я пробовал console.log(), но все еще пустым.

+0

Вы пробовали настройки отладки контрольных точек в консоли разработчика на каждой строке? Это скажет вам, какая часть конкретно не ведет себя так, как ожидалось. – Corey

+0

использовать jsonlint.com для проверки вашего json – charlietfl

ответ

2

JSON требует кавычек вокруг имен атрибутов. Так что вам нужно сделать что-то вроде этого: объекты

[ 
{ 
    "name" : "ABC", 
    "id"  : "link_abc" 
}, 
... 
] 

JavaScript не требуют имена атрибутов в кавычки, но JSON делает.

НТН

+0

Этот вопрос решает вопрос. Я могу получить доступ к атрибутам, но, как сказал @Corey, я не могу делать каждый для массива. Я узнаю это через некоторое время. Спасибо, ребята! – rolodex

1

Я вижу несколько проблем:

  • Ваш объект JSON является недействительным. Это массив объектов, но первые два объекта не разделены , и строки в JSON должны быть указаны.
  • В вашем javascript-коде вы ссылаетесь на obj.users, и ваш объект, даже если он будет иметь то, что ,, не имеет пользователей.
+0

OK. Я обновил свой вопрос. в отношении вашего комментария. Но все равно ничего. – rolodex

+0

@rolodex все еще obj.name не определено ... использовать '. $ .each (obj, function (i, o) {console.log (o.name)})' и индексы котировки в json. –

1

Вы не можете сделать каждый на obj.name. obj - массив. Массивы не имеют свойства с именем «имя», и поэтому вы никогда не войдете в цикл.

Просто зациклируйте объект obj [0] на obj [obj.length-1].

Смежные вопросы