Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/02/2006, 06:50
argv64
 
Fecha de Ingreso: febrero-2006
Mensajes: 2
Antigüedad: 18 años, 3 meses
Puntos: 0
objecto.responseXML no me va

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