开发者问题收集

jquery 中的 JSON 节点,未捕获的 TypeError:无法读取未定义的属性“0”

2014-03-24
13687

如何从下面的 jquery 代码中读取 JSON 节点,目前,我在 Firebug 中收到“Uncaught TypeError: Cannot read property '0' of undefined”,请让我知道我做错了什么。

Jquery

$(document).ready(function() {


$('#search_btn_2').click(function(){

var queryValue = $('#search_string_2').val();

$('.my-div').hide();

$.getJSON( "${kb_endpoint_url}",
             { search_query : queryValue } 
         )

.done(function( data ) 
{
console.log("success:"+queryValue+":"+data);

alert(data.docs[0].title);                    

$('.my-div').html('<a href="'+data.docs[0].type+'">'+data.docs[0].title+'</a>'); 

})

.done(function() { console.log("second success"); })

.fail(function() { console.log("error"); })

.always(function() { console.log("finished"); $('.my-div').show(); });                   

});

});

JSON

{
   "response":{
      "start":0,
      "docs":[
         {
            "summary":"image/img1.jpg",
            "id":"17",
            "title":"Varun",
            "votecount":0,
            "_version_":1192256,
            "type":"User"
         }
      ],
      "numFound":1
   },
   "responseHeader":{
      "status":0,
      "QTime":1,
      "params":{
         "indent":"true",
         "q":"varun",
         "wt":"json"
      }
   }
}
3个回答

data.docs 未定义。根据您的 JSON 结构,您正在寻找 data.response.docs

Scimonster
2014-03-24

您弄错了,您的层次结构是:

data -> response -> docs

但是,您试图直接访问文档( 数据 -> 文档 ),这是错误的。

Ehsan Sajjad
2014-03-24

docs 属性属于 data.response 对象,因此您需要使用 data.response.docs[0] 而不是 data.docs[0]

您的对象中没有名为 data.docs 的属性,这就是导致错误的原因。

Arun P Johny
2014-03-24