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

}

emailページが読み込まれた後に値を入力したい次の HTML があります。

<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でない場合はチェックする必要があります

それがあなたを助けることを願っています。

于 2011-07-11T06:44:25.857 に答える
0

AJAX リクエストをクロスドメインで実行することはできません (getJSON は本質的に単なるラッパーです)。ブラウザで許可されていないだけです。ここでコールバックの出番です。できることは、jQuery の getScript 関数を使用してスクリプト タグをページに書き込むことです。コールバックは返された JSON をラップして、script タグのコンテンツが引数として渡された 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 に答える