我试图做一个Youtube API,我觉得除了这个gapi和res之外我还能解决所有问题吗?它说gapi没有定义。我怎样才能做到这一点?
function tplawesome(e,t){res=e;for(var n=0;n<t.length;n++){res=res.replace(/\{\{(.*?)\}\}/g,function(e,r){return t[n][r]})}return res}
$(function() {
$("form").on("submit", function(e) {
e.preventDefault();
// prepare the request
var request = gapi.client.youtube.search.list({
part: "snippet",
type: "video",
q: encodeURIComponent($("#search").val()).replace(/%20/g, "+"),
maxResults: 3,
order: "viewCount",
publishedAfter: "2015-01-01T00:00:00Z"
});
// execute the request
request.execute(function(response) {
var results = response.result;
$("#results").html("");
$.each(results.items, function(index, item) {
$.get("tpl/item.html", function(data) {
$("#results").append(tplawesome(data, [{"title":item.snippet.title, "videoid":item.id.videoId}]));
});
});
resetVideoHeight();
});
});
$(window).on("resize", resetVideoHeight);
});
function resetVideoHeight() {
$(".video").css("height", $("#results").width() * 9/16);
}
function init() {
gapi.client.setApiKey("AIzaSyD646m4ZfK5yKBZj9p95LohN-PTUnRHBRY");
gapi.client.load("youtube", "v3", function() {
});
}
答案 0 :(得分:1)
gapi
是由Google API javascript库创建的对象,可以为您管理所有交互(即完成所有繁重的请求)。如果未定义对象,则可能未将库本身包含在页面中。在HTML的某个地方,您需要一个脚本标记来加载位于以下位置的库:
https://apis.google.com/js/client.js
请注意,在使用脚本标记加载库时,您还应该向其传递一个回调...这是一个在加载库后立即自动调用的函数。所以在你的情况下,你的init()方法就是那个回调,所以你的脚本标签看起来像这样:
<script src="https://apis.google.com/js/client.js?onload=init"></script>
浏览器将获取库,加载它,然后在库完成加载时运行init(),并且所有内容都准备好在触发时执行表单。