2010-10-25 63 views
1

我想使用jquery/json显示这些数组,但我一直未定义。显示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> 

回答

0

您在这里有问题的原因是因为你是通过数组中的错误级别循环,当你叫$.each(data)

你是$.each(data)内部代码期望是通过项目的数组循环,但实际上,它是通过data数组键本身,其中只有一个循环,这是items

修复很简单:更改数据in your each()call to be data.items`。

的代码行现在看起来是这样的:

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

希望有所帮助。 (即使有点迟了)