El problema es simple. Mediante la clase Request de Mootools obtengo un xml de la siguiente forma:
Código XML:
En resumen, lo que deseo hacer es, una vez obtenido este XML, poder en priemra instancia detectar si existe el tag <error>, lo cual indica que el proceso falló. Si existe, debo entonces obtener el valor de su atributo "tipo", y luego el contenido del nodo, para definir como proceder para cada tipo de error. Luego, lo mismo con los diferentes nodos posibles, como <html> o <redirect>.Ver original
<?xml version="1.0" encoding="UTF-8"?> <response> <error tipo="1"> <![CDATA[Error en la base de datos]]> </error> <html> <![CDATA[<div class="error">No se pudo votar</div>]]> </html> <js> <![CDATA[<script>....</script>º]]> </js> <redirect>www.algo.com</redirect> </response>
Actualmente tengo esto (he recortado muchas partes que no importan ahora:
Código Javascript:
Ver original
new Request({ method: 'get', url: '/ajax', data: {'id' : 561, 'request' : 'cap.votar' }, onSuccess: function(responseText, responseXML) { // Aqui es donde debo actuar. Deseo usar responseXML para obtener la información resultante del request } }).send();
Lo que hasta ahora he conseguido hacer, leyendo por aqui y por allá, es esto:
Detectar si un nodo existe o no:
Código Javascript:
Ver original
if(responseXML.getElementsByTagName('error')[0]) { // Existe } else { // No existe }
Obtener el valor del atributo tipo:
Código Javascript:
Ver original
responseXML.getElementsByTagName('error')[0].attributes.getNamedItem("tipo").nodeValue
Y finalmente, para leer el valor del nodo, según lo que leí, es diferente para IE y el resto:
Código Javascript:
Ver original
// IE responseXML.getElementsByTagName('error')[0].text // No IE responseXML.getElementsByTagName('error')[0].textContent
Básicamente esas son las 3 cosas que deseo lograr. La duda aquí es, que como evidentemente no manejo bien este tema de XML y javascript, tal vez lo estoy haciendo de un modo no muy adecuado, por lo que me gustaría que me ayuden a definir cuál sería la mejor manera de tratar esto, o si necesariamente hay que colocar código específico para distintos navegadores.
No sé si tenga que ver algo, pero como coloco en el título, el XML lo traigo usando Mootools.
Gracias!