Javascript 使用jquery从Youtube提要xml获取视频Id时出现问题

Javascript 使用jquery从Youtube提要xml获取视频Id时出现问题,javascript,jquery,xml,youtube,Javascript,Jquery,Xml,Youtube,好的,据我所知,我在这里试图实现的是非常简单的,基本上我已经用youtube API用url字符串构造了一个搜索结果。如果浏览到url,可以看到返回的xml,一切正常。网址: https://gdata.youtube.com/feeds/api/videos?q=all 小事情&max results=1&v=2&format=5&orderby=relevance&safeSearch=none 我写了一点jquery,它应该用xml元素中的数据填充html中的名为agenda()的div。

好的,据我所知,我在这里试图实现的是非常简单的,基本上我已经用youtube API用url字符串构造了一个搜索结果。如果浏览到url,可以看到返回的xml,一切正常。网址:

https://gdata.youtube.com/feeds/api/videos?q=all 小事情&max results=1&v=2&format=5&orderby=relevance&safeSearch=none

我写了一点jquery,它应该用
xml元素中的数据填充html中的名为agenda(
)的div。基本上,只是用视频ID填充div。以下是我的jQuery:

$(document).ready(function(){
    $.get("https://gdata.youtube.com/feeds/api/videos?q=all the small thing&max-results=1&v=2&format=5&orderby=relevance&safeSearch=none",{},function(xml){
        $('entry',xml).each(function(i){
            var vidID = $(this).find("yt:videoid").text();
        });//end find entry

        alert(vidID);
        $('#agenda').html(vidID);
    });//end ajax   
});//end .ready

然而实际上什么都没有发生,警报没有关闭,事实上它抛出了一个错误,
vidID
未定义,从我所能知道的一切都是按它应该的方式设置的,如果有人真的需要看到它,我会发布链接,但目前它在我的raspberry pi服务器上,所以我不想发布我的IP,但我是那么绝望:p。如果有人能发现我做错了什么,我已经做了好几个小时了,这让我发疯。提前感谢。

我不确定数据的确切格式,但问题是您的vId范围仅在$.each函数内。所以您需要将其移出每个块,以便能够访问其值。下一件事是,如果节点条目将仅为1,则可以删除每个节点条目

试一试

使用易于操作的三维布管数据格式 示例:-在url中只需添加
alt=jsonc

https://gdata.youtube.com/feeds/api/videos?q=all%20the%20small%20thing&max-results=1&v=2&format=5&orderby=relevance&safeSearch=none&alt=jsonc
如果需要,可以循环使用json:-在示例中只有一个,所以我只使用json.data.item[0]。理想情况下,您将循环浏览该项目

$(document).ready(function () {
    $.get("http://gdata.youtube.com/feeds/api/videos?q=all%20the%20small%20thing&max-results=1&v=2&format=5&orderby=relevance&safeSearch=none&alt=jsonc", {}, function (json) {
      var vidID = json.data.items[0].id;
        alert(vidID);
        $('#agenda').html(vidID);
    }); //end ajax   
}); //end .ready

vidID
的声明移到
之外。每个
块。@Musa好吧,这样做它就不再返回未定义,而是返回为空。@PSL似乎可以工作,我可以处理它,但
肯定存在,我很确定。文档中说,你可以在那里找到视频id,如果你浏览到url并搜索页面,你可以看到它…@PSL现在只有一个是的,确实很好用,不过你知道为什么它不能与
yt:videoid
一起使用吗?我可以在实际返回的XML中看到该元素……谢谢,非常感谢。你让我一夜狂欢了十万次better@Nick更新了答案,使用来自youtube的JSON格式的数据。先生,你是我最喜欢的人。
https://gdata.youtube.com/feeds/api/videos?q=all%20the%20small%20thing&max-results=1&v=2&format=5&orderby=relevance&safeSearch=none&alt=jsonc
$(document).ready(function () {
    $.get("http://gdata.youtube.com/feeds/api/videos?q=all%20the%20small%20thing&max-results=1&v=2&format=5&orderby=relevance&safeSearch=none&alt=jsonc", {}, function (json) {
      var vidID = json.data.items[0].id;
        alert(vidID);
        $('#agenda').html(vidID);
    }); //end ajax   
}); //end .ready