2014-04-12 65 views
1

我正在尝试通过Karl Swedburg为Ajax学习jQuery第4版的练习,更具体地说是JSONP。使用.getJSON的JSONP返回undefined

我的代码是

$(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 
undefined 

我得到6 undefined,这将等同于2次迭代看到,因为输出每轮3个项目,即。 ID,名称和网址。

回答

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

+0

您的代码有效,但它为什么正常工作?即时通讯在result.data.object中获取结果而不是result.object是什么意思? –

+2

您直接在代码(数据)中循环getJSON回调的结果。但是实际的数据存在于代码中的data.data中,在我的code.data中。所以你需要遍历result.data来访问结果对象。希望能帮助到你。 –

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

+0

为什么改变?callback =? to?callback使它工作?从文档中,它表示该字符串必须包含callback =?为了它的工作,那么为什么它会改变它使它在这种情况下工作? –