0

我想从https://api.github.com/users/mojombo获取以下 JSON 提要:

{
    "public_repos": 52,
    "type": "User",
    "bio": "",
    "url": "https://api.github.com/users/mojombo",
    "avatar_url": "https://secure.gravatar.com/avatar
        /25c7c18223fb42a4c6ae1c8db6f50f9b?d=https:  
        //gs1.wac.edgecastcdn.net/80460E/assets%2Fimages%2Fgravatars%2Fgravatar-140.png",
    "login": "mojombo",
    "public_gists": 66,
    "following": 11,
    "created_at": "2007-10-20T05:24:19Z",
    "email": "tom@github.com",
    "followers": 2252,
    "company": "GitHub, Inc.",
    "blog": "http://tom.preston-werner.com",
    "name": "Tom Preston-Werner",
    "location": "San Francisco",
    "html_url": "https://github.com/mojombo",
    "hireable": true,
    "id": 1

}

我有以下 HTML,我想email在页面加载后用值填充:

<div id='github-mojombo'></div>

我不能让 JQuery 做我想做的事。诚然,我并不完全理解回调和/或对 JQuery 有很多经验。在下面的示例中,user_email未定义。我究竟做错了什么?我将如何更改它以使其在这些 DIV 中插入电子邮件?

<script>
    jQuery(document).ready(function($) {
        $.getJSON("https://api.github.com/users/mojombo?callback=?", 
            function(data) {
            var user_data = data;
        var user_email = user_data.email;
        alert('Got email ' + user_email);
        });
    });
</script>
4

4 回答 4

1

在尝试访问响应的属性之前,我会先将响应解析为 JSON:

var user_data = JSON.parse(data)
于 2011-07-08T20:46:51.147 回答
1
jQuery(document).ready(function($){
  $.getJSON("https://api.github.com/users/mojombo?callback=?", function(data){
    var user_email = data.data.email; //note the data.data
    alert('Got email ' + user_email);
  });
});
于 2011-07-08T20:49:50.923 回答
1

你可以使用以下

function(response)

var List = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d; $.each(List, function() { this["public_repos"]; });

您必须检查响应的长度,如果它不为 0,那么您可以使用关键字 this["columnname"] 循环并获取结果

希望它会帮助你。

于 2011-07-11T06:44:25.857 回答
0

您不能跨域执行 AJAX 请求(getJSON 本质上只是一个包装器),浏览器不允许这样做。这就是回调的来源。您可以使用jQuery 的getScript 函数将脚本标记写入页面。回调将包装返回的 JSON,以便脚本标记的内容是您的函数,并将 JSON 作为参数传递。然后在您的函数中处理 JSON。代码看起来像这样:

function myCallback(jsonData)
{
    // do something with the JSON

    var user_data = JSON.parse(data);
    var user_email = user_data.email;
    alert('Got email ' + user_email);
}

jQuery(document).ready(function($){
    $.getScript("https://api.github.com/users/mojombo?callback=myCallback");
});

的输出https://api.github.com/users/mojombo?callback=myCallback看起来像:

myCallback('{"name":"foo", "email":"foo@bar.com", ...rest of the json...}');
于 2011-07-08T20:58:21.270 回答