这是我的YouTube项目的一部分。我尝试从JSON格式中提取视频信息,但在此行遇到问题:
var videoId = data.feed.entry[i].link[1].href;
当我在单行中执行此操作时,在cikle中不可行,但在cikle中出现错误时或出现错误时。
//get youtube ID function extract(url){ pos1=url.indexOf("videos/"); pos2=url.substr(42,11); return pos2; } //My playlist LINK var url2="http://gdata.youtube.com/feeds/api/playlists/B2A4E1367126848D?v=2&alt=json"; function playlistinfo(url1) { $.ajax({ url: url1, dataType: "jsonp", success: function (data) { parseresults(data); } }); } //whit this get playlist data function parseresults(data) { //return playlist clip number var klipove= data.feed.openSearch$totalResults.$t; //put clips in <li> for(i=0;i<=klipove-1;i++) { var videoId = data.feed.entry[i].link[1].href; //get video id ID var id= extract(videoId); thumb = data.feed.entry[i].media$group.media$thumbnail[0].url; $('<li><img src="'+thumb+'" alt="'+id+'" class="thumb"/></li>').appendTo('.cont'); } }
恕我直言,如果您使用$.getJSON,可以大大缩短您的代码,$.each 试试看。
$.getJSON
$.each
var playListURL = 'http://gdata.youtube.com/feeds/api/playlists/B2A4E1367126848D?v=2&alt=json&callback=?'; var videoURL= 'http://www.youtube.com/watch?v='; $.getJSON(playListURL, function(data) { var list_data=""; $.each(data.feed.entry, function(i, item) { var feedTitle = item.title.$t; var feedURL = item.link[1].href; var fragments = feedURL.split("/"); var videoID = fragments[fragments.length - 2]; var url = videoURL + videoID; var thumb = "http://img.youtube.com/vi/"+ videoID +"/default.jpg"; if (videoID !='videos') { list_data += '<li><a href="'+ url +'" title="'+ feedTitle +'"><img alt="'+ feedTitle+'" src="'+ thumb +'"</a></li>'; } }); $(list_data).appendTo(".cont"); });
演示:拨弄您提供的播放列表
PS:请记住,可以在以下位置找到youtube视频的缩略图
http://img.youtube.com/vi/{video-id}/default.jpg