12/07/2007, 14:35
|
| | Fecha de Ingreso: noviembre-2006
Mensajes: 33
Antigüedad: 18 años Puntos: 0 | |
Re: Problemas con Ajax y xml Hola a todos..... les comento que ya resolví el problema.... les cuento cómo para aquellos a los que les suceda puedan componerlo porque a mi si me llevó un buen rato.
Para comenzar la aplicación no la hice yo por lo que me costó un poco más entender la lógica de algunas cosas, pero finalmente salió todo bien. El problema era el siguiente:
La razón por la cual el responseXML.getElementsByTagName("beneficiarios")[0]; venía como nulo es porque no estaba tómando como válido el encabezado que traía el XML, inicialmente el xml es armado por una jsp que consulta ejbs y dependiendo de su resultado construye una cadena que posteriormente se toma como contenido del xml, a pesar de que en la construcción de la cadena le estaba poniendo el encabezado al xml, no lo tomaba, aún cuando el response.setContentType("text/xml; charset=ISO-8859-1"); trajera lo que debe de tener y también en las directivas de la jsp incluía <%@ page contentType="text/xml. Adicionalmente comento que estaba tratando el ajax con el framework del prototype pues en sus atributos lo forzaba igual con el encoding y contentype a que procesara este tipo de archivo.... y seguia sin pasar nada.... Más confuso aún cuando existían dos procedimientos exactamente iguales y funcionaban.... tal cual acabo de mencionarlo. Depués de haber leído muchas cosas y de no encontrar una razón "lógica" de porque unos funcionaban y otros sí me dí a la tarea de hacer un experimento poniendo estáticamente el encabezado en la jsp como si fuera un xml .... y voilá..... funcionó... lo que puse estáticamente fue lo siguiente.... <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
Aunado a esto, la jsp tenía detalles que había que corregir aún .... porque para mi mala fortuna (o buena no lo sé) tiene que funcionar en 3 navegadores como mínimo y estos son FF, IE y Safari para mac o Windows.
Esos detalles son los siguientes:
1.- Cuando hacemos un document.getElementById generalmente toma el id del tag que se desee... IE es capaz de tomar ese id como name,... lo interpreta casi como lo mismo y no tenía problema.... sin embargo FF y Safari no pueden... por lo que les recomiendo que revisen bien este punto.
2.- El xml tenía los "famosos retornos de carro" para que se formateara de una manera entendible para el humano..... y es cuando uno se pregunta... si la máquina es quien lo interpreta... qué más dá como venga organizado... Los retornos de carro le hacen ruido al XML ... otra cosa más por lo que mi componente no funcionaba.
3.- Finalmente, cuando hacemos un nodo.childNodes[0].nodeValue obtenemos un nodo X de un determinado XML, cuando este nodo no contiene nada... IE y FF son capaces de interpretarlo como vacío OJO! VACÍO.... NO NULO ... sin embargo Safari no es capaz de eso... y no encuentra el nodo, razón por la cual simplemente no hace nada y se pierde.
Bueno espero que esta información le sea de ayuda a alguien... para que no pierda tanto tiempo como yo... y para los que ya lo sabían... que mala onda que no me avisaron antes !!! jaja
Saludos desde México!! |