Javascript jQuery$.ajax调用在某些视频中使用YouTube API获取JSON失败
除了其他细节之外,我还试图为某个YouTube视频获取给定视频的标题。因为它们可能都源于同一个问题,所以我将只展示一个使用API获取标题的简化示例。以下是我目前掌握的情况:Javascript jQuery$.ajax调用在某些视频中使用YouTube API获取JSON失败,javascript,jquery,youtube-api,Javascript,Jquery,Youtube Api,除了其他细节之外,我还试图为某个YouTube视频获取给定视频的标题。因为它们可能都源于同一个问题,所以我将只展示一个使用API获取标题的简化示例。以下是我目前掌握的情况: $.ajax({ url: "https://gdata.youtube.com/feeds/api/videos/" + videoID + "?v=2&alt=json", dataType: "jsonp", success: function(data) { video
$.ajax({
url: "https://gdata.youtube.com/feeds/api/videos/" + videoID + "?v=2&alt=json",
dataType: "jsonp",
success: function(data) {
videoName = data.entry.title.$t;
$('#video_name').text(videoName);
}
});
对于某些视频,例如,这非常有效。对于其他人,例如,它永远不会获取这些信息
为什么这不起作用?第二个例子只是一个不适用于此的视频。大约有三分之一似乎不起作用
我真的很想了解一下这方面的情况
编辑我如何获得videoID
:
var videoID = getUrlVars()["v"];
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
function(m,key,value) {
vars[key] = value;
});
return vars;
}
示例视频的结尾如下:?v=J66NOwZegc4
EDIT2因此,我添加了$.ajax函数,它似乎是导致问题的原因:
$.ajax({
url: "https://gdata.youtube.com/feeds/api/videos/" + videoID + "?v=2&alt=json",
dataType: "jsonp",
async: "false",
success: function(data) {
commentCount = data.entry.gd$comments.gd$feedLink.countHint;
iterations = Math.floor(commentCount/50);
remaining = commentCount - (iterations*50);
videoDesc = data.entry.title.$t;
$('#video_name').text(videoDesc);
document.title = 'Watching "' + videoDesc + '" on YTRT';
$('#shareLink').val('http://www.ytrealtime.com?v=' + videoID);
}
});
在这里,您提供的2个演示可以很好地工作,其他代码通过
videoID
传递到$。ajax
也可以很好地工作@virendrajput刚刚意识到这一点。如果你看我的第二次编辑,你会看到我发现了什么。无论出于何种原因,第二个示例没有显示注释数量的data.entry.gd$comments.gd$feedLink.countHint。您必须检查API,查看响应中的可选内容,并测试它是否存在。API应该会给你一个完整的响应模式分解。我唯一能找到的是关于feedLink
,但在这个响应中甚至不存在。