Foros del Web » Programando para Internet » Jquery »

Error al recibir respuesta con $.ajax si la solicitud esta mal

Estas en el tema de Error al recibir respuesta con $.ajax si la solicitud esta mal en el foro de Jquery en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/08/2012, 00:29
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
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

Etiquetas: getjson, js, recibir, respuesta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:02.