好的,根据我的理解,我在这里要完成的是超级简单,基本上我已经使用youtube API从url字符串中构建了搜索结果。如果你浏览到网址,你可以看到返回的xml,一切都很好。网址:
https://gdata.youtube.com/feeds/api/videos?q=all the small things&max-results=1&v=2&format=5&orderby=relevance&safeSearch=none
我已经编写了一些jquery,它应该填充我的div,称为议程(<div id = "agenda">
),它存在于html中,其中包含<yt:videoid>
xml元素中的数据。只是为了用视频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
未定义的错误,从我所知道的一切都按照应该的方式设置,我会发布链接,如果有人真的需要看到它的直播,但目前它是在我的覆盆子pi服务器,所以我不担心发布我的IP,但我是绝望的:p。如果有人能发现我做错了什么,我已经在这里待了好几个小时,这让我疯了。提前谢谢。
答案 0 :(得分:1)
我不确定数据的格式究竟是什么,但问题是你的vId范围只在$ .each函数中。因此,您需要将其移出每个块以便能够访问其值。接下来的事情是,如果节点条目只有1,你就可以摆脱每一个。
尝试
$(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){
var vidID;
$('entry',xml).each(function(i){
vidID = $(this).find('id').text();
});//end find entry
alert(vidID);
$('#agenda').html(vidID);
});//end ajax
});//end .ready
或
$(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) {
var vidID = $('entry', xml).find('id').text();
alert(vidID);
$('#agenda').html(vidID);
}); //end ajax
}); //end .ready
使用JSON-C格式管数据易于操作
示例: - 在您的网址中只需添加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