Javascript 如何在客户端检查YouTube上是否存在视频
我正在做 我需要检查,如果Javascript 如何在客户端检查YouTube上是否存在视频,javascript,jquery,ajax,youtube,youtube-api,Javascript,Jquery,Ajax,Youtube,Youtube Api,我正在做 我需要检查,如果Youtubeurl不存在,我应该抛出错误,我遵循了这一点并创建了用于检查它的 它适用于有效的url,但不适用于无效的url。我在网络控制台中只看到404错误 是否有一种方法可以使用JavaScript和jQuery检查客户端是否存在url 这是我的密码: var videoID = 'kn8yzJITdvI';//not working //var videoID = 'p4kIwWHP8Vc';//working $.ajax({ url: "http
Youtube
url不存在,我应该抛出错误,我遵循了这一点并创建了用于检查它的
它适用于有效的url,但不适用于无效的url。我在网络控制台中只看到404错误
是否有一种方法可以使用JavaScript
和jQuery
检查客户端是否存在url
这是我的密码:
var videoID = 'kn8yzJITdvI';//not working
//var videoID = 'p4kIwWHP8Vc';//working
$.ajax({
url: "https://gdata.youtube.com/feeds/api/videos/" + videoID + "?v=2&alt=json",
dataType: "jsonp",
success: function(data) {
console.log(data)
$("#result").text(data);
},
error: function(jqXHR, textStatus, errorThrown)
{
// Handle errors here
alert('ERRORS: ' + textStatus);
}
});
这是一个已知问题,请参阅
来自:
错误
注意:跨域脚本和跨域JSONP请求不调用此处理程序
有人已经和你有同样的问题,你不能在跨域请求时检查404错误。你应该通过超时来处理它
在客户端尝试以下操作:
//here, oABCD01234 is YouTube id
$.ajax({
type: 'HEAD',
url: 'http://gdata.youtube.com/feeds/api/videos/oABCD01234',
success: function() {
//it exists!
},
error: function(jqXhr) {
if(jqXhr.status == 400) {
//it doesn't exist
}
}
});
@hitesh,请从ajax请求中删除数据类型:“jsonp”。这样,如果视频id可用,您将获得json字符串,如果它不可用,则将调用ajax错误回调。我试了试你的小提琴,它能用。像这样试试-
//var videoID = 'kn8yzJITdvI';//not working
var videoID = 'p4kIwWHP8Vc';//working
$.ajax({
url: "https://gdata.youtube.com/feeds/api/videos/" + videoID + "?v=2&alt=json",
//dataType: "jsonp",
success: function(data) {
console.log(data)
$("#result").text(data);
},
error: function(jqXHR, textStatus, errorThrown)
{
// Handle errors here
alert('ERRORS: ' + textStatus);
}
});
下面是您需要的解决方案的另一个简短实现-
//var videoID = 'kn8yzJITdvI';//not working
var videoID = 'p4kIwWHP8Vc';//working
$.getJSON('http://gdata.youtube.com/feeds/api/videos/'+videoID+'?v=2&alt=jsonc',function(data,status,xhr){
alert(data.data.title);
}).error(function() { alert("error"); });
对于那些正在寻找使用V3 API的解决方案的人,您可以执行以下操作:
var videoID = 'the_youtube_video_id';
$.getJSON('https://www.googleapis.com/youtube/v3/videos?id=' + videoID
+ "&key=INSERT_YOUR_API_KEY_HERE&part=COMMA_DELIMITED_VALUE",
function (data, status, xhr) {
if (data.items.length > 0)
alert('It is there!')
else
alert('Are you sure you about the Id?');
console.log(status);
console.log(xhr);
}).error(function (xhr, errorType, exception) {
var errorMessage = exception || xhr.statusText || xhr.responseText;
alert(errorMessage);
});
有关有效的零件列表,您可以访问。仍然停留在youtube上:P@hitesh请标记为对您有效的解决方案的答案,以便其他人也可以得到答案benefit@JitendraPancholi:ha:P yaaa;)@innomanik:对不起,下班后我没有上网。。。我会接受正确的答案:)谢谢你的回答:)我如何在v3中做到这一点?现在看来这个电话已经被否决了。我得到:{“apiVersion”:“2.1”,“error”:{“code”:410,“message”:“不再可用”,“errors”:[{“domain”:“GData”,“code”:“NoLongerAvailableException”,“internalReason”:“不再可用”}}}@mila看到我的答案了吗