目前我正试图从youtube频道与youtube api拉视频,然后使用javascript来搜索和分类它。我可以得到一个搜索工作在一个html表,但不能得到它的工作表,我通过api创建。
我当前的html代码基本上是这样的:
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/script.js"></script>
</head>
<body>
<div id="container">
<h1> RBx Youtube Videos </h1>
<input type="text" id="search" placeholder="Type to search">
<table id="results"> </table>
</div>
</body>
视频在这里检索:
$(document).ready(function(){
$.get(
"https://www.googleapis.com/youtube/v3/channels",{
part: "contentDetails",
forUsername: channelName,
key: pkey},
function(data){
$.each(data.items, function(i, item){
console.log(item);
pid = item.contentDetails.relatedPlaylists.uploads;
getVids(pid);
})
}
);
function getVids(pid){
$.get(
"https://www.googleapis.com/youtube/v3/playlistItems",{
part: "snippet",
maxResults: 50,
playlistId: pid,
key: pkey},
function(data){
var output;
$.each(data.items, function(i, item){
console.log(item);
videoTitle = item.snippet.title;
videoId = item.snippet.resourceId.videoId;
videoDescription=item.snippet.description;
output = '<tr><td><img src="http://img.youtube.com/vi/'+videoId+'/1.jpg"></img></td><td><a href="https://www.youtube.com/watch?v='+videoId+'">'+videoTitle+'</a></td></tr><tr><td colspan="2" align="right">'+videoDescription+'<hr>';
//output = '<tr><td>'+videoTitle+'</td></tr>';
//Append to results listStyleType
$('#results').append(output);
})
}
);
}
}
我将假设您在输出字符串中使用的变量值是有效的。请注意输出字符串中HTML语法的正确性。<img>
元素不能有结束标记,因为它是一个空元素,您应该以</td></tr>
:
output = '<tr><td><img src="http://img.youtube.com/vi/'+videoId+'/1.jpg"></td><td><a href="https://www.youtube.com/watch?v='+videoId+'">'+videoTitle+'</a></td></tr><tr><td colspan="2" align="right">'+videoDescription+'<hr></td></tr>';
一般来说,这种生成HTML的方式是有风险的,而且容易出错。您应该始终验证、清理或转义输出中使用的所有变量。也许看看HTML5中引入的<template>
元素会有所帮助,并在这种情况下使用它。您可以使用表行检查此示例。