Ich erhalte diesen Fehler, wenn ich versuche, JS für die Interaktion mit der Youtube-API zu verwenden. Dies ist der Konsolenfehler, den ich erhalte.Kann die Eigenschaft 'Suche' von undefined nicht lesen - Youtube-API
Uncaught TypeError: Cannot read property 'search' of undefined
at HTMLFormElement.<anonymous> (app.js:7)
at HTMLFormElement.dispatch (jquery-2.2.4.min.js:3)
at HTMLFormElement.r.handle (jquery-2.2.4.min.js:3)
Dies ist das Skript, das ich zu interagieren verwenden.
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 api 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("myapikey");
gapi.client.load("youtube", "v3", function() {
/* check if api is ready */
});
}
Ich war von der Person gesagt, die mich zunächst mit dem Skript dazu beigetragen, dass es Probleme, es sei denn es ist auf einem tatsächlichen Webserver wie Apache, aber mir ist so verstehe ich nicht, was das Problem verursacht. Irgendwelche Ideen?
Hi, woher nennst du 'gapi'? Es scheint, dass das YouTube-Objekt nicht definiert ist. Hat der API-Zugriffsschlüssel die richtigen Anmeldeinformationen? Dies müsste beim Erstellen einer neuen Anwendung in der Google-Konsole festgelegt werden. – G0dsquad
Es ist am Ende meines HTML, sorry darüber. Es ist definitiv in der Google-Konsole eingerichtet, das ist was mich verwirrt. – RachMcrae
Das Problem wird wahrscheinlich damit zu tun haben, dass 'client.load' asynchron ist und Ihr Aufruf von' search' aufgerufen wird, wenn die API nicht bereit ist. http://stackoverflow.com/questions/24586072/gapi-client-youtube-is-undefined. Es sieht auch nicht aus wie 'init' wird jemals aufgerufen. Wenn Sie dies beim Laden der Seite aufrufen, sollten Sie in Ordnung sein, da die Suche erst nach dem Senden des Formulars ausgeführt wird. – G0dsquad