Hola estoy intentando recoger un XML y obtener sus datos a través de Javascript.
En Firefox no hay ningún problema pero en IE obtengo error. Lo pongo por partes para que se entienda.
Este es el XML devuelto:
Código:
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<Results>
<Row>
<NUMHAB>0</NUMHAB>
<WALTAP>1</WALTAP>
<HALTAP>1</HALTAP>
<NOMBRE>Jaume Vinyes</NOMBRE>
<NIF>XXXXXXX</NIF>
</Row>
<Row>
<NUMHAB>1</NUMHAB>
<WALTAP>2</WALTAP>
<HALTAP>2</HALTAP>
<NOMBRE>Jose Garrido</NOMBRE>
<NIF>XXXXXXX</NIF>
</Row>
</Results>
Y este el código Javascript
:
Código:
var xmlhttp = null;
function inicio() {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
if (typeof xmlhttp.overrideMimeType != 'undefined') {
xmlhttp.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert('El navegador no soporta XML y HTTP request. No se puede continuar');
}
}
function cargar() {
//GET, POST, HEAD
xmlhttp.open('GET', 'frame.aspx', true);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function() {
if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
//var myObj = eval(xmlhttp.responseText);
var myObj = xmlhttp.responseXML;
Action(myObj);
}
else {
}
}
if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
//var myObj = eval(xmlhttp.responseText);
var myObj = xmlhttp.responseXML;
Action(myObj);
}
}
function Action(myObj) {
window.alert('');
var responseXML = myObj;
//window.alert(xmlhttp.responseText);
var item1 = responseXML.getElementsByTagName('Results')[0];
var row = item1.getElementsByTagName('Row')[0];
var elem = row.getElementsByTagName('NOMBRE')[0];
var datos = elem.firstChild.data;
// document.write(datos);
window.alert(datos);
}
En FF me hace el alert de Jaume Vinyes sin problemas.
Para que me entre en Action, en IE tengo que añadir las líneas en rojo.
Además en IE, item1 se queda con valor null, por lo que ya no hace alert de nada, pero si hago el window.alert(xmlhttp.responseText); al comienzo, si que se ve que recoge el XML.
Creo que es por la codificación de éste, pero no estoy seguro.
¿Alguién puede echarme un cable?
Gracias.