我在做validation for my Youtube
url text field。
我需要检查一下,如果Youtube
网址不存在,我应该抛出错误,我按照此answer创建jsfiddle进行检查。
它适用于有效网址但不适用于无效网址。我看到network console
有没有办法使用JavaScript
和jQuery
检查客户端是否存在网址。
这是我的代码:
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);
}
});
答案 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)
答案 3 :(得分:1)
有人已经遇到了与您相同的问题,您在执行跨域请求时无法检查404错误。你应该通过超时来处理它。
答案 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
}
}
});