使用.getJSON的JSONP返回undefined

时间:2014-04-12 10:53:52

标签: javascript jquery ajax jsonp

我正在尝试使用Karl Swedburg为Ajax学习jQuery第4版,更具体地说是JSONP。

我的代码是

$(document).ready(function(){
var url='https://api.github.com/users/jquery/repos';
$.getJSON(url + '?callback=?',function(data){
  var content='';
  $.each(data,function(index,item){
    content +='<div class="userdata">';
    content +='<div class="username">'+item.id+'</div>';
    content +='<div class="username">'+item.name+'</div>';
    content +='<div class="userurl">'+item.url+'</div>';
    content +='</div>';
  });
  $('#dictionary').append(content);

});
});

我检查了开发人员工具,我的请求返回状态200

,请求返回的数据摘录如下所示

{
  "id": 5999890,
  "name": "2012-dev-summit",
  "full_name": "jquery/2012-dev-summit",
  //more stuff
}

我已经检查并仔细检查了我的代码,似乎无法弄清楚为什么它返回未定义。

编辑:添加了附加内容

undefined
undefined
undefined
undefined
undefined
undefined

我得到6个undefined,这相当于2次迭代看到每轮输出3个项目,即。 id,name和url。

2 个答案:

答案 0 :(得分:1)

尝试以下方法。您将在result.data对象中获得结果。不在结果对象中。

$(document).ready(function(){
var url='https://api.github.com/users/jquery/repos';
$.getJSON(url + '?callback=?',function(result){
  var content='';
  var data = result.data;
  $.each(data,function(index,item){
    content +='<div class="userdata">';
    content +='<div class="username">'+item.id+'</div>';
    content +='<div class="username">'+item.name+'</div>';
    content +='<div class="userurl">'+item.url+'</div>';
    content +='</div>';
  });
  $('#dictionary').append(content);

});

});

FIDDLE

答案 1 :(得分:0)

试试这个

$(document).ready(function(){
var url='https://api.github.com/users/jquery/repos';
$.getJSON(url + '?callback',function(data){
  var content='';
  $.each(data,function(index,item){
    content +='<div class="userdata">';
    content +='<div class="username">'+item.id+'</div>';
    content +='<div class="username">'+item.name+'</div>';
    content +='<div class="userurl">'+item.url+'</div>';
    content +='</div>';
  });
  $('#dictionary').append(content);

});
});

DEMO