Tengo respuesta.php que contiene:
Código:
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:<message> HOla </message>
Código:
la funcion toConsole hace que el navegador muestre el texto pasado.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); } }
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:
Me va de perlas, me saca: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); } }
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:
Gracias por su atención <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>