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看到我的答案了吗