如何在客户端检查YouTube上是否存在视频

时间:2015-03-02 11:48:35

标签: javascript jquery ajax youtube youtube-api

我在做validation for my Youtube url text field

我需要检查一下,如果Youtube网址不存在,我应该抛出错误,我按照此answer创建jsfiddle进行检查。

它适用于有效网址但不适用于无效网址。我看到network console

中的404错误

enter image description here

有没有办法使用JavaScriptjQuery检查客户端是否存在网址。

这是我的代码:

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);

                    }
});

JSfiddle Link

5 个答案:

答案 0 :(得分:5)

@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"); });

答案 1 :(得分:1)

答案 2 :(得分:1)

来自$.ajax docs

错误

  

注意:不会为跨域脚本和跨域JSONP请求调用此处理程序。

答案 3 :(得分:1)

有人已经遇到了与您相同的问题,您在执行跨域请求时无法检查404错误。你应该通过超时来处理它。

JSONP request error handling

答案 4 :(得分:1)

在客户端试试这个:

//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
        }
    }
});