Hola, llevo toda la mañana porque no me va el responseXML. A ver si me pueden echar un cable.
Tengo respuesta.php que contiene:
Código:
<message>
HOla
</message>
Entonces, Solo quiero mostrar lo que esta dentro de los tags message. Inicializo un XMLHttpRequest, hace sus estados correctamente y llega la función principal dónde le digo lo que tiene que hacer:
Código:
function onReadyState(){
var ready=req.readyState;
var data=null;
if (ready == 4){
data = req.responseXML.documentElement;
var message = data.getElementsByTagName('message')[0].firstChild.data;
toConsole(message);
}else{
data="loading... ["+ready+"]";
toConsole(data);
}
}
la funcion toConsole hace que el navegador muestre el texto pasado.
En el navegador me sale:
loading... [1]
loading... [1]
loading... [2]
loading... [3]
Se queda en blanco en el estado 4.
En cambio si no uso responseXML sino responseText:
Código:
function onReadyState(){
var ready=req.readyState;
var data=null;
if (ready==READY_STATE_COMPLETE){
data = req.responseText;
toConsole(data);
}else{
data="loading... ["+ready+"]";
toConsole(data);
}
}
Me va de perlas, me saca:
loading... [1]
loading... [1]
loading... [2]
loading... [3]
<message> HOla </message>
La cuestion es que quiero trabajar con XML y no hay manera de que me funcione, he encontrado ejemplos en google, que usaban DOM, otros que usaban easyXML... pero no hay manera, los intento aplicar al codigo y que va.
A ver si me podeis echar un cable, teneis algun pequeño ejemplo que vaya bien? porque es que yo ya no se que provar, y todo lo que he provado en XML la respuesta ha sido blanca.
Os pasteo el codigo entero por si a caso:
Código:
<html>
<head>
<script type='text/javascript'>
var req=null;
var console=null;
var READY_STATE_UNINITIALIZED=0;
var READY_STATE_LOADING=1;
var READY_STATE_LOADED=2;
var READY_STATE_INTERACTIVE=3;
var READY_STATE_COMPLETE=4;
function sendRequest(url,params,HttpMethod){
req=initXMLHTTPRequest();
if (req){
req.onreadystatechange=onReadyState;
req.open("POST",url,true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(params);
}
}
function initXMLHTTPRequest(){
var xRequest=null;
if (window.XMLHttpRequest){
xRequest=new XMLHttpRequest();
} else if (window.ActiveXObject){
xRequest=new ActiveXObject("Microsoft.XMLHTTP");
}
return xRequest;
}
function onReadyState(){
var ready=req.readyState;
var data=null;
if (ready==READY_STATE_COMPLETE){
data = req.responseText;
toConsole(data);
/*
data = req.responseXML.documentElement;
var message = data.getElementsByTagName('message')[0].firstChild.data;
toConsole(message);
*/
}else{
data="loading... ["+ready+"]";
toConsole(data);
}
}
function toConsole(data){
if (console!=null){
var newline=document.createElement("div");
console.appendChild(newline);
var txt=document.createTextNode(data);
newline.appendChild(txt);
}
}
window.onload=function(){
console=document.getElementById('console');
sendRequest("resposta2.php");
}
</script>
</head>
<body>
<div id='console'></div>
</body>
</html>
Gracias por su atención