jQuery JSON没有定义变量

时间:2014-01-20 13:58:06

标签: javascript jquery json getjson

我的基本要求是我可以获取YouTube视频的标题,以便我可以访问它并将其应用到我的页面,但是我遇到了一个问题,我试图在评论中解释:

//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;
}

2 个答案:

答案 0 :(得分:0)

为什么不尝试将所有data.data.title附加到列表中而不是每次都替换整个变量?也许最后一次迭代是将null设置为videoTitle变量。

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);
        })

    })
}

答案 1 :(得分:0)

&#34;数据&#34; json对象在函数$ .getJSON中定义,一旦函数结束,对象将被销毁。 尝试在外部定义数据对象,并通过引用getJSON发送它。或者更好,但不要从外面打电话。