Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema al parsear la respuesta XML en ie

Estas en el tema de Problema al parsear la respuesta XML en ie en el foro de Frameworks JS en Foros del Web. Hola a todos, en Firefox va perfectamente pero en ie6,ie7 no funciona. vereis, hago una peticion AJAX y recibo un xml de este estilo (os ...
  #1 (permalink)  
Antiguo 17/02/2010, 04:00
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 19 años
Puntos: 0
Problema al parsear la respuesta XML en ie

Hola a todos, en Firefox va perfectamente pero en ie6,ie7 no funciona.
vereis, hago una peticion AJAX y recibo un xml de este estilo (os pongo la respuesta recibida en firefox con firebug)

Código:
<?xml version="1.0" encoding="utf-8"?><carreras registros='22'><carrera idCarrera='12' gp='tres' circuito='circuito tres' inicio='1264978800000' fin='1268968800000' fecha='2010-02-05'></carrera><carrera idCarrera='13' gp='4' circuito='circuito cuatro' inicio='1266188400000' fin='1266573600000' fecha='2010-02-08'</carrera></carreras>
Luego mando la respuesta con el XML a una funcion dentro de una clase y aqui esdonde al parsear el XML para sacar los datos en Firefox va sin problemas y en ie no funciona.


Código:
  
//la variable respuesta contiene la respuesta XML recibida
this.situaCarrera= function(respuesta){
 this.carrerasXML = respuesta;
 var root = respuesta.documentElement;
 var carreras = this.carrerasXML.getElementsByTagName('carreras');

// aqui en this.numCarreras es donde me da el fallo, me dice que el elemento 0 no existe o es nulo
 this.numCarreras=carreras[0].getAttribute('registros');

 //alert(this.numCarreras);
 this.carrera = this.carrerasXML.getElementsByTagName('carrera');
Si hago un alert de la variable carreras "carreras = this.carrerasXML.getElementsByTagName('carreras')" en firefox me da 22 y en explorer 0, y esto me dice que no estoy leyendo bien el XML y no se si es por la funcion "getElementsByTagName" o por cualquier otro motivo.

Alguna idea?
  #2 (permalink)  
Antiguo 17/02/2010, 10:18
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 419
Antigüedad: 21 años, 4 meses
Puntos: 1
Respuesta: Problema al parsear la respuesta XML en ie

Hola Pepepercebe.
Hace poco he estado con un problema similar. Asegúrate de que si vienen caracteres 'latin' en el paquete XML hayas encabezado el envio con:
header('Content-type: text/xml; charset=iso-8859-1', true);

Y el paquete XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
Cuando trabajo con MySQL y charset=latin uno hay que usar el ISO-8859 por tanto.

Te lo digo porque me ocurría lo mismo que a ti al ir a parsear el paquete recibido.
Este es mi post reciente con este problema
Y aquí se habla bastante de los charset y como afecta a AJAX. Además de que FF e IE trabajan algo diferente.

Espero haber ayudado.
Un saludo!

Última edición por bauhaus1975; 17/02/2010 a las 10:35
  #3 (permalink)  
Antiguo 17/02/2010, 15:11
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 19 años
Puntos: 0
Respuesta: Problema al parsear la respuesta XML en ie

Gracias bauhaus1975, he hecho lo que me dices pero el problema persistia, y al final el fallo es porque tengo en la base de datos un campo llamado pais en el cual se encuentra la palabra "España" con nuestra querida "ñ". He quitado la "ñ" y ha funcionar.

Que es lo que debo de modificar en la base de datos o en la consulta para que pueda poner la "ñ"?

El campo pais lo tengo como VARCHAR(50) y como cortejamiento utf_general_ci.
  #4 (permalink)  
Antiguo 18/02/2010, 02:02
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 419
Antigüedad: 21 años, 4 meses
Puntos: 1
Respuesta: Problema al parsear la respuesta XML en ie

Hola de nuevo.

Supongo que estás trabajando con MySQL. La configuración que deberías tener es latin1, en cuanto a las variables de configuración 'charset_set_database', 'charset_set_connection' etc (salvo charset_system) es latin1. No soy un experto configurando MySQL, pero creo que así, que es como lo tengo hace tiempo.

Si te funciona al quitar 'la eñe', tiene pinta de que puede ser a lo que me refería antes. Es decir, si al no ir la eñe en el paquete funciona puede ser que algo siga mal.

¿Has probado lo siguiente?
El archivo que envia el XML (supongo que trabajas con php aunque no lo especificas), asegúrate de que lo primero que muestre salida sea:
header('Content-type: text/xml; charset=iso-8859-1', true);

Y que el paquete XML tenga la cabecera
<?xml version="1.0" encoding="ISO-8859-1"?>

En todo caso si persisten los problemas danos más pistas dsobre el código que envia los datos...
Saludos.
  #5 (permalink)  
Antiguo 18/02/2010, 14:42
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 11 meses
Puntos: 45
Respuesta: Problema al parsear la respuesta XML en ie

Buenas,

el tema de la codificación de caracteres es un tema complejo y del que no hay mucha información ya que a los de habla inglesa no les afecta este problema. Es mucho mejor usar el estandar unicode en formato de codificación utf-8 porque el conjunto de caracteres que se puede representar es mucho mayor (alrededor de 10 millones) mientras que con ISO 8859-1 sólo se pueden representar 256 . En caso de usarlo es mejor usar su ampliación ISO 8859-15 que incluye soporte para el símbolo de euro. Usando utf-8 y si además lo conviertes a entities antes de mostrarlo en la página te asegurarás que se verán siempre correctamente todos los caracteres, ya sean acentuados, eñes o cualquier otro caracter independientemente de la configuración que cada uno tenga en el navegador. También se evitarían errores como los comentados en otros hilos por problemas con caracteres de urls como por ejemplo el & .

En mysql la colación creo que es algo asi: utf8_spanish_ci o _cs si quieres distinguir mayúsculas. Hay un buen manual en linea que puedes consultar en su página.

Etiquetas: ajax, respuesta, xml, parse
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 13:27.