Youtube iframe api检查video是否存在

我正在处理一个带有文本输入的简单页面,用户可以在其中添加要插入页面的YouTubevideo的ID,然后我调用youtube的iframe api来加载video。 但是,如果用户添加了不存在的ID,则会出现黑屏。

我希望有人知道在加载之前检查video是否存在的方法。

这是我的代码:

$(document).ready(function() { $('#loadVid').click(function() { var player; var urlVid = $('#urlVid').val(); //GET THE VIDEO CODE FROM THE TEXT INPUT player = new YT.Player('player', { height: '390', width: '640', videoId: urlVid, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); }); }); 

这里$ videoId包含yuotubeurl的videoID

 public function checkVideoExists() { $headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $videoId); if (!strpos($headers[0], '200')) { echo "The YouTube video you entered does not exist"; return false; } } 

根据文档 , onError应该给你这样的信息

100 – 找不到请求的video。 video被删除(出于任何原因)或被标记为私有时会发生此错误。

将onError事件处理程序添加到events对象

 events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange, 'onError': function(errEvent) { var errCode = errEvent.data; if(errCode == 100) { alert('Video Not Found'); } } } 

在打开播放器之前,只需触发对URL的测试Ajax请求。 如果Youtube页面video不存在,则会返回404标题(我刚刚使用不存在的videourl对其进行了测试)。

如果使用$ .ajax方法,则可以在成功回调中插入播放器加载函数,并在错误回调中触发错误警报(如果响应头为4xx或5xx则应调用它)