Hola señores
Estoy trabajando en un website promocional-concurso al que los participantes deben pasar la url de un video de su autoría subido exclusivamente a YouTube.
Con indexOf y substr capturo el ID del video y luego lo paso al API de YouTube para validar usando la siguiente url:
Código HTML:
http://gdata.youtube.com/feeds/api/videos/<VIDEO ID>?v=2&alt=json
Hago una solicitud con $.ajax a dicha url. Si el ID es válido me devuelve json sin ningún problema, pero si no es válido, en IE8 recibo como respuesta 0. Al revisar la consola en Chrome tengo el siguiente error:
No tengo forma de darle respuesta al usuario si se presenta tal error en IE8 y por lo visto el API de YouTube no me ayuda. ¿Existe alguna alternativa para evitar que los errores 404 de jQuery no bloqueen mi script?
Acá les dejo mi script tal como lo tengo en este momento por si necesitan revisarlo para estar más claros:
Código HTML:
function youtubeData (url,fnt)
{
var ytdta = {};
if (String(url).indexOf('youtube.com') != -1 || String(url).indexOf('youtu.be') != -1)
{
if (String(url).indexOf('?v=') != -1)
{
ytdta['id'] = url.split('?v=')[1].substr(0,11);
};
if (String(url).indexOf('&v=') != -1)
{
ytdta['id'] = url.split('&v=')[1].substr(0,11);
};
if (String(url).indexOf('/v/') != -1)
{
ytdta['id'] = url.split('/v/')[1].substr(0,11);
};
if (String(url).indexOf('youtu.be/') != -1)
{
ytdta['id'] = url.split('youtu.be/')[1].substr(0,11);
};
$.ajax({
url: 'http://gdata.youtube.com/feeds/api/videos/' + ytdta['id'] + '?v=2&alt=json',
dataType: 'json',
success: function(data)
{
var d = data.entry.media$group;
ytdta['title'] = d.media$title.$t;
ytdta['seconds'] = d.yt$duration.seconds;
ytdta['pic0_url'] = d.media$thumbnail[0].url;
ytdta['pic0_width'] = d.media$thumbnail[0].width;
ytdta['pic0_height'] = d.media$thumbnail[0].height;
ytdta['pic1_url'] = d.media$thumbnail[1].url;
ytdta['pic1_width'] = d.media$thumbnail[1].width;
ytdta['pic1_height'] = d.media$thumbnail[1].height;
ytdta['pic2_url'] = d.media$thumbnail[2].url;
ytdta['pic2_width'] = d.media$thumbnail[2].width;
ytdta['pic2_height'] = d.media$thumbnail[2].height;
ytdta['message'] = 200;
fnt(ytdta);
},
error: function(xhr)
{
ytdta['message'] = xhr.status;
fnt(ytdta);
}
});
} else {
ytdta['message'] = 400;
fnt(ytdta);
};
};
De antemano gracias por cualquier ayuda, idea o sugerencia que me puedan ofrecer.