2012-01-05 118 views
0

開始嘗試使用Vimeo API嘗試創建類似於此的可點擊圖庫(http://www.aideffectiveness.org/busanhlf4/vimeo/php-example.php)。但是,當我將一些代碼移到「script.js」文件中作爲從網站的其他部分組織代碼的方式時,json回調一直說'embedVideo'函數未定義。有任何想法嗎?未定義的函數OEmbed Vimeo API

的 「的script.js」 文件被放置在頁面的底部,有以下幾點:

var NS = NS || NS; 

NS = { 

    videoInit: function() { 

    var oEmbedUrl = 'http://vimeo.com/api/oembed.json'; 
    var oEmbedCallback = 'embedVideo'; 
    var videoid = ""; 

    if(videoid == ''){ 
     videoid = '23515961'; 
    } 

    function embedVideo(video) { 
     var videoEmbedCode = video.html; 
     document.getElementById('embed').innerHTML = unescape(videoEmbedCode); 
    } 

    function init() { 
     loadScript(oEmbedUrl + '?url=http://vimeo.com/' + videoid + '&height=380&width=700&callback=' + oEmbedCallback); 
    } 

    function loadScript(url) { 
     var js = document.createElement('script'); 
     js.setAttribute('src', url); 
     document.getElementsByTagName('head').item(0).appendChild(js); 
    } 

    init(); 
    } 
} 
$(function() { 
    NS.videoInit(); 
}); 

的HTML:

<div id="wrapper"> 
    <div id="embed"></div> 
</div> 

回答

1

embedVideo是本地(私有)函數中的init方法。外面沒有任何東西可以看到它。這就是爲什麼你的AJAX回調拋出該錯誤。

您可以通過embedVideo適當方法NS的解決這個問題,所以這是它給你的Ajax回調可見

NS = { 
    embedVideo: function(video) { 
    var videoEmbedCode = video.html; 
    document.getElementById('embed').innerHTML = unescape(videoEmbedCode); 
    }, 

    videoInit: function() { 

    var oEmbedUrl = 'http://vimeo.com/api/oembed.json'; 
    var oEmbedCallback = 'embedVideo'; 
    var videoid = ""; 

    if(videoid == ''){ 
     videoid = '23515961'; 
    } 
+0

我把我的腳本文件中的代碼但它仍然告訴我,embedVideo是未定義。然而,這工作:有沒有辦法讓它更乾淨。 'function embedVideo(video){ var videoEmbedCode = video.html; document.getElementById('embed')。innerHTML = unescape(videoEmbedCode); } NS = {...} ' – user906080 2012-01-05 00:30:55

+0

我只是想讓embedVideo成爲NS的一種方法。或者你可以將它附加到其他實用程序對象。無論哪種方式,它永遠不會作爲Init中的本地函數工作。 – 2012-01-05 00:37:52

+0

這就是我現在所擁有的。當embedVideo是NS的一種方法時,它仍然不起作用。 http://jsfiddle.net/Kwmtn/3/ – user906080 2012-01-05 20:57:33