Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery$.ajax调用在某些视频中使用YouTube API获取JSON失败_Javascript_Jquery_Youtube Api - Fatal编程技术网

Javascript jQuery$.ajax调用在某些视频中使用YouTube API获取JSON失败

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

除了其他细节之外,我还试图为某个YouTube视频获取给定视频的标题。因为它们可能都源于同一个问题,所以我将只展示一个使用API获取标题的简化示例。以下是我目前掌握的情况:

$.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
,但在这个响应中甚至不存在。