2016-09-09 2 views
0

私は現在APIを使用することを学んでいます。私はGithubリポジトリからデータを取得しています。スクリプトでJSON情報をgithubData変数にロードしようとしています。しかし、コンソールにgithubData変数を記録すると、空の配列が返されます。 しかし、ページが読み込まれた後もまったく同じ関数で新しい変数を作成すると、スクリプトは正確に動作するはずです。 ページがロードされているときに、実際のデータがロードされていません。空の配列をロードします。私は関数が非同期であることを認識しているので、ページをロードするときに配列が空にならないようにするにはどうすればよいですか? は、ここに私のコードです:空の配列を返すjQuery.ajax

var githubAPI = 'https://api.github.com/repos/zacharysohovich/ticTacToe/readme'; 
var items = {}; 
jQuery.ajax({ 
    url: githubAPI, 
    contentType: 'application/json; charset=utf-8', 
    success: function(resultData) { 
    $.each(resultData, function(key,val) { 
     items[key] = val; 
    }); 
    } 
}); 
var githubData = $.map(items,function(k,v) { 
    return ("<p>" + k + ": " + v + "</p>"); 
}); 

答えて

1

問題はその非同期呼び出しは、リクエストの火たら、それは、コードの次の部分に入ることを意味していることです。いったんgithubDataに到達すると、APIの応答はまだ受信されていないため、アイテムはまだ空のオブジェクトです。 私は成功にそう

var items = {} var githubData; 、その後のようなvar items = {} 以下githubData変数右インスタンス化します:あなたは、これがあることを保証

githubData = $.map(items,function(k,v) { return ("<p>" + k + ": " + v + "</p>"); });

を置くことができます$ .each後に機能を応答が何かに戻ってくる限り、APIコールは終了し、アイテムには何かがあるはずです

+0

これは機能しました。それを説明してくれてありがとう – Zachary

関連する問題