Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/03/2009, 16:54
pepepercebe
 
Fecha de Ingreso: diciembre-2005
Mensajes: 92
Antigüedad: 18 años, 4 meses
Puntos: 0
Problema al recibir responseXML

Hola a todos, estoy practicando con AJAX, y primero probe a utilizar responseText y funcionaba correctamente, pero al intentar cambiar el codigo para utilizar responseXML tengo problemas al intentar acceder al archivo que recibo generado con PHP.

Tengo este codigo PHP, que hace una consulta a la base de datos y me devuelve el numero de filas encontradas que es el valor que quiero pasar en la variable &a. Yo creo que el archivo este va bien:

Código PHP:
<?php
require_once("php/php.php");

$formUsuario $_POST['usuario'];
$control$_POST['control'];

switch (
$control){
    case 
"usuario"
        
$nombremysql_escape_string($formUsuario)    ;            
        
$servidor "xxxxxxxxx";
        
$usuario "xxxxxxx";
        
$pass "xxxxxxxx";
        
$base_datos "xxxxxxxx";
        
$mysql "select * from general WHERE nombre='{$nombre}' ";
        
$conexion = new Servidor_Base_Datos($servidor,$usuario,$pass,$base_datos);
        
$conexion-> consulta($mysql);
        
$a =$conexion->numero_filas();

        
$xml=  "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
        
$xml.= "<Valida>";
        
//echo "<control>".$a."</control>";

// He probado con CDATA y Sin CDATA obteniendo el mismo resultado

        
$xml.="<Control>![CDATA[$a]]</Control>";
        
$xml.="</Valida>";
        
header("Content-type:text/xml");
        echo 
$xml;
    break;
     case 
2:
    
alert("no");
    break;
    default:
    echo(
"no va");

}
   
?>
Estoy trabajando con Firebug y este indica que la respuesta recibida del servidor es :

<?xml version="1.0" encoding="utf-8" ?><Valida><Control>![CDATA[1]]</Control></Valida>

Si realizo alert("Estado: " + ajax.status + "\nMotivo: " + ajax.statusText);

obtengo

Estado: 200
Motivo: OK


Yo creo que se produce la recepcion pero el problema viene al intentar sacar los datos recibidos mediante DOM. Os pongo el codigo que utilizo y el error que da el firebug:

Cita:

var documento = ajax.responseXML;
var root = documento.getElementsByTagName('Valida')[0];
var info = root.getElementsByTagName('Control')[0].firstChild.nodeValue;
El programa se para al llegar a la fila de root mostrando el siguiente error:

root is undefined
onreadystatechange()()index.js (línea 376)
[Break on this error] var info = root.getElementsByTagName('Control')[0].firstChild.nodeValue


Espero que me podais ayudar porque llevo unos dias atascado en este punto y no encuentro la solucion.

Salu2