-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 回答