2015-05-06 61 views
0

我試圖做一個Youtube API,我覺得我得到了一切工作,除了這gapi和res的東西?它說gapi沒有定義。我該如何做這項工作?Youtube API,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() { 
    }); 
} 

回答

1

gapi是JavaScript庫,管理所有交互谷歌API創建的對象(即不請求的所有繁重)爲您。如果對象沒有被定義,你可能沒有將庫本身包含在你的頁面中。某處在你的HTML,你需要加載位於庫中的腳本標籤:

https://apis.google.com/js/client.js

需要注意的是,在加載與腳本標籤庫,你也應該把它傳遞一個回調...這是一個函數,只要庫加載完成,它就會自動調用。所以你的情況,你的init()方法是回調,所以你的腳本標籤應該是這樣的:

<script src="https://apis.google.com/js/client.js?onload=init"></script> 

瀏覽器將得到庫,加載它,然後運行的init()當庫完成加載,並且所有將在觸發時準備好讓表單執行。

相關問題