Проблема с отображением файла JSON - PullRequest
1 голос
/ 25 октября 2010

Я пытаюсь отобразить эти массивы с помощью jquery / json, но я получаю неопределенное значение.

Кроме того, как я могу отобразить, если пользователь не нажмет «A»?

== jSON file ==

// JSON
{
"items": [
{
"title": "welcoem home",
"author": "Charles Dickens"
},
{
"title": "Harry Potter",
"author": "J rowling"
}
]
}

==

<script language="javascript" >
$(document).ready(function() {
  $('#letter-a a').click(function() {
    $.getJSON('q3.json', function(data) {
      $('#dictionary').empty();
      $.each(data, function(entryIndex, entry) {
        var html = '<div class="entry">';
        html += '<h3 class="term">' + entry['title'] + '</h3>';
        html += '<div class="part">' + entry['author'] + '</div>';
        html += '<div class="definition">';
        html += entry['definition'];
        if (entry['items']) {
          html += '<div class="quote">';
          $.each(entry['items'], function(lineIndex, line) {
            html += '<div class="quote-line">' + line + '</div>';
          });
          if (entry['author']) {
            html += '<div class="quote-author">' + entry['author'] + '</div>';
          }
          html += '</div>';
        }
        html += '</div>';
        html += '</div>';
        $('#dictionary').append(html);
      });
    });
    return false;
  });
});


</script>

<link rel="stylesheet" href="json.css" type="text/css" />
</head>

<body>
<div id="container">
        <div id="header">
        <h2>json stuff</h2>
        </div>

        <div class="letters">
                <div class="letter" id="letter-a">
                <h3><a href="#">A</a></h3>
                </div>      

        </div>
        <div id="dictionary">

        </div>
</div>

1 Ответ

0 голосов
/ 14 июля 2011

Причина, по которой у вас возникли проблемы, заключается в том, что вы перебирали неправильный уровень в массиве, когда вызывали $.each(data).

Ваш код внутри этого $.each(data) ожидает, что он будет проходить через массив элементов, но на самом деле он циклически перебирает все ключи массива data, из которых только один - items.

Исправление очень простое: изменение данных in your each ()call to be data.items`.

Строка кода теперь выглядит следующим образом:

$.each(data.items, function(entryIndex, entry) {

Надеюсь, это поможет.(даже если уже немного поздно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...