Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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 Youtube数据API v。3-显示私人/已删除视频的频道作者名称_Javascript_Api_Youtube - Fatal编程技术网

Javascript Youtube数据API v。3-显示私人/已删除视频的频道作者名称

Javascript Youtube数据API v。3-显示私人/已删除视频的频道作者名称,javascript,api,youtube,Javascript,Api,Youtube,这是一个非常适得其反的内部决定。如果我错了,请纠正我,但他们目前不想公开私人/已删除视频的频道名称。如果发生这种情况,他们甚至称之为“bug”()。那么,如果我单独请求之前是公共的但后来变成私有或被删除的视频ID,会发生什么呢?通过使用Youube数据API v3,我将在控制台中获得一条“response is undefined”(响应未定义)错误消息。当信息发生时会发生什么?我的密码坏了 这是我目前使用的代码: function DisplayThemVideos(yeah) { var y

这是一个非常适得其反的内部决定。如果我错了,请纠正我,但他们目前不想公开私人/已删除视频的频道名称。如果发生这种情况,他们甚至称之为“bug”()。那么,如果我单独请求之前是公共的但后来变成私有或被删除的视频ID,会发生什么呢?通过使用Youube数据API v3,我将在控制台中获得一条“response is undefined”(响应未定义)错误消息。当信息发生时会发生什么?我的密码坏了

这是我目前使用的代码:

function DisplayThemVideos(yeah) {
var yeah = $("#ThoseMissingIDs").text();
var vidrequestOptions = {
id: yeah,
part: 'snippet',
fields: 'items(id),items(snippet(channelId)),items(snippet(channelTitle)),
items(snippet(title)),items(snippet(thumbnails(default)))'
};

var vidrequest = gapi.client.youtube.videos.list(vidrequestOptions);
vidrequest.execute(function(response) {
var videoIdItems = response.result.items;
if (videoIdItems) { // If results
displayResults(videoIdItems);
} else { // if NO results
alert('Sawwy, YouLose, thx to Youtube!'); // This alert never fires!
}
});
}
现在,未定义的“响应”实际上是从Youtube服务器发送回我的应用程序的空请求。Youtube以一个空的“item”标签作为回应,这显然对
displayResults(videoIdItems)
功能没有多大帮助,该功能在没有显示任何项目的情况下启动!他们至少应该让频道名称和频道ID过滤,这样用户就可以点击一个链接来访问该频道的其余公共视频(这不是很有效率吗?)

因此,我的难题是让
else
部分像这样工作:

displayResults(videoIdItems);
} else { // if NO results or if results return EMPTY or response "undefined"
alert('Sorry pal but these IDs ___________ are currently missing.
Click the Channel link to access the public videos of that channel.');
}
else
部分在类似的API调用中正常工作,如Youtube Data API v.3示例代码所示,但我想它目前无法处理空请求

那我该怎么办?我是否必须使用带有成功-失败错误处理的ajax调用?正如我之前所说的,API返回一个空请求,因此响应是合法的,但是对于私有/删除的视频,响应内容是空的,因此,在wway过程中代码会中断,这是“未定义的”


任何导致有效解决方案的提示都会有所帮助!谢谢您的指导。

我只能部分回答我的问题。最简单的方法是使用
Try-Catch
Catch
方法,该方法检测除语法错误以外的所有内容,有助于检测空响应(未定义)并激活可以访问Youtube播放器以显示缺失ID的当前可用状态的功能:

...

var vidrequest = gapi.client.youtube.videos.list(vidrequestOptions);
vidrequest.execute(function(response) {

try {
var videoIdItems = response.result.items;
if (videoIdItems) { // If results
displayResults(videoIdItems);
return false;
}

} catch (e) {
// put code here that handles errors such as empty or undefined response
// which otherwise breaks your code

} finally {
// optionally, put code here that will always trigger
}

});
希望这能帮助别人