Hola a todos, espero puedan ayudarme, tengo un codigo en PHP que lee una lista de planes desde la BD y el resultado lo genera como documento XML:
Código PHP:
<?php
session_start();
require "leeplan-controller.php";
$PLANTELEFONIA=$_SESSION["PLANESCEL"];
$numplanes=count($PLANTELEFONIA);
echo "<?xml version='1.0' encoding='UTF-8' ?>";
?>
<consultaplanes>
<?php
for ($i=0;$i<$numplanes;$i++)
{
?>
<plan>
<nombre><?php echo $PLANTELEFONIA[$i]["descPlan"];?></nombre>
<codigo><?php echo $PLANTELEFONIA[$i]["idPlan"];?></codigo>
</plan>
<?php
}
?>
</consultaplanes>
el archivo se llama leeplan-view.php y si lo ejecuto directamente rescata la información en formato correcto, es decir el documento XML. El documento generado tiene esta forma:
Código HTML:
<?xml version="1.0" encoding="UTF-8" ?>
- <consultaplanes>
- <plan>
<nombre>Plan Multimedia 100 minutos todo destino</nombre>
<codigo>M100</codigo>
</plan>
- <plan>
<nombre>Plan Multimedia 200 minutos todo destino</nombre>
<codigo>M200</codigo>
</plan>
- <plan>
<nombre>BlackBerry 800 minutos todo destino</nombre>
<codigo>BB800</codigo>
</plan>
- <plan>
<nombre>Iphone 400 minutos todo destino</nombre>
<codigo>IP400</codigo>
</plan>
</consultaplanes>
El punto es que esta información (que obviamente puede variar en función de los registros almacenados en la BD) debo cargarla en un elemento de tipo <select> y para ello estoy utilizando Ajax (se que se puede hacer de otra forma pero mi problema es con Ajax). Con esta funcion estoy tratando de realizar esta accion:
Código:
function leePlanesAjax()
{
var ajax=newAjax();
ajax.open("GET", "leeplan-view.php", true); //no se enviaran datos, por eso modo GET
ajax.send(); //método send con argumento null, pues método de envío especificado es GET
ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{
xmlDoc=ajax.responseXML;
document.getElementById("pln").innerHTML=xmlDoc; // --> esto pone en la pagina el valor [objet]]
var plan=xmlDoc.getElementsByTagName("plan");
document.getElementById("pln").innerHTML=plan.length //-->esto pone en la pagina valor cero
nombre="";
codigo="";
for (i=0;i<plan.length;i++) //cantidad de nodos con tag "plan"
{
nombre=plan[i].childNodes[0].nodeValue + "<br/>"; //accede al primer nodo "plan" y a su vez al primer nodo hijo que corresponde al tag "nombre"
document.getElementById("pln").innerHTML=nombre;
codigo=plan[i].childNodes[1].nodeValue + "<br/>"; //accede al primer nodo "plan" y a su vez al segundo nodo hijo que corresponde al tag "codigo"
}
}
}
}
El inconveniente que tengo es que aparentemente extraigo el documento XML pero cuando trato de acceder al arbol DOM es como si estuviera vacío. Se que el elemento <select> lo debo construir por separado, pero mientras no logre tener acceso a la información no puedo hacer esta construcción, ¿alguien puede darme una idea de que estoy haciendo mal?
Muchas gracias