Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/08/2012, 00:29
Avatar de junihh
junihh
 
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 7
Error al recibir respuesta con $.ajax si la solicitud esta mal

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:

Cita:
GET http://gdata.youtube.com/feeds/api/v...o?v=2&alt=json 404 (Not Found) jquery.min.js:2
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.
__________________
JuniHH
- Mi blog
- Mi portafolio

Última edición por junihh; 19/08/2012 a las 02:13