-2

重複の可能性:
jQuery AJAX: 成功時の戻り値

YouTube データ API から曲リストを読み込もうとしていますが、独自の関数に分割するまで成功しています。

問題は、呼び出し元の関数に戻すときにローカル変数の値が気化することです。基本的に、使用しようとすると、値が含まれている場合は空の配列になります。何が起こっているのか知っている人はいますか?

function LoadSongList(feed){
    songList = new Array();
    $.getJSON(feed, function(data){

        if (data['feed']) {
            $.each(data['feed']['entry'], function(i, entry){
                songList.push({
                    videoID: entry.media$group.yt$videoid.$t,
                    title: entry.title.$t,
                    tumbnailUrl: entry.media$group.media$thumbnail[0].url,
                    author: entry.author[0].name.$t
                });

            });
        }

    });
    return songList;
}
4

1 に答える 1

4

コールバック メソッドを提供する必要があります。$.getJSON非同期メソッドであり、songList成功メソッドが呼び出される前に戻ろうとしています。

function LoadSongList(feed, callback){
    songList = new Array();
    $.getJSON(feed, function(data){

        if (data['feed']) {
            $.each(data['feed']['entry'], function(i, entry){
                songList.push({
                    videoID: entry.media$group.yt$videoid.$t,
                    title: entry.title.$t,
                    tumbnailUrl: entry.media$group.media$thumbnail[0].url,
                    author: entry.author[0].name.$t
                });

            });
          callback(songList);
        }
    });
}

次のように呼び出します。

LoadSongList(feed, function(songList){
  // your code 

});
于 2012-09-30T12:22:25.787 に答える