2014-01-20 69 views
0

我的基本要求是我可以得到一個YouTube視頻的標題,以便我可以訪問它並將其應用到我的頁面,但是我遇到了一個問題,我嘗試在評論中解釋:jQuery JSON沒有定義變量

//first I declare my array and variable for the video information 
var videoID = []; 
var videoTitle; 

//this ensures that the <div> exists 
if ($("#productVideo0").length > 0) { 

    //then for every occurrence of and embedded video... 
    $(".youtube-video").each(function() { 

     //I call this function which strips the video id out of the URL (in the array[1] element] 
     videoID = getVideoID($(this).children().attr('src')); 

     //then I make the JSON call 
     $.getJSON('http://gdata.youtube.com/feeds/api/videos/' + videoID[1] + '?v=2&alt=jsonc', function (data) { 

      //if I alert this line below, it displays the title. 
      //However, if I try to alert or use this variable outside the function 
      //it just displays "undefined" or [object,object] depending on what I do 
      videoTitle = data.data.title; 
     }) 

    }) 
} 

//this uses regex to strip the id from the url 
function getVideoID(url) { 
    url = url.match(/embed\/(\w*)/); 
    return url; 
} 
+0

我不能真正看到你在解析JSON。 – Bloodcount

+0

而不是警報,使用控制檯,那麼你將能夠看到你的對象,而不是'[object Object]' –

回答

0

你爲什麼不嘗試所有的data.data.title追加到一個列表,而不是每次都更換整個變量?也許最後一次迭代是將videoTitle變量設置爲null。

var videoID = []; 
var videoTitle = []; 

//this ensures that the <div> exists 
if ($("#productVideo0").length > 0) { 


    $(".youtube-video").each(function() { 
     videoID = getVideoID($(this).children().attr('src')); 

     //then I make the JSON call 
     $.getJSON('http://gdata.youtube.com/feeds/api/videos/' + videoID[1] + '?v=2&alt=jsonc', function (data) { 


      videoTitle.push(data.data.title); 
     }) 

    }) 
} 
0

「data」json對象在函數$ .getJSON中定義,一旦函數結束,對象將被銷燬。 嘗試在外部定義數據對象並通過引用getJSON來發送它。或更好,但不要從外面打電話。