Javascript / jQuery函数返回值为空

时间:2012-09-30 12:19:25

标签: javascript jquery api youtube jquery-data

  

可能重复:
  jQuery AJAX: return value on success

我正在尝试从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;
}

1 个答案:

答案 0 :(得分:4)

您应该提供回调方法。 $.getJSON是异步方法,您尝试在调用success方法之前返回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 

});