Código Javascript:
Ver original
function cargarProductos(producto){ var httpRequest; if (window.XMLHttpRequest) { //El explorador implementa la interfaz de forma nativa httpRequest = new XMLHttpRequest(); } else if (window.ActiveXObject) { //El explorador permite crear objetos ActiveX try { httpRequest = new ActiveXObject("MSXML2.XMLHTTP"); } catch (e) { try { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } httpRequest.onreadystatechange = function() { if (httpRequest.readyState == 4) { if (httpRequest.status ==200){ //se establece que es un archivo xml lo que se recibe y se parsea var parser = new DOMParser(); var xmlDoc = parser.parseFromString(httpRequest.responseText, "application/xml"); /* cuerpo <root> <producto> <nombre>...</nombre> <idcategoria>...</idcategoria> </producto> <producto> <nombre>...</nombre> <idcategoria>...</idcategoria> </producto> ... </producto> </root> */ var root= xmlDoc.getElementsByTagName("producto"); for (var i=0; i< root.length; i++){ //se debe de saltar de 2 en 2 en cada nodo hijo //los indices pares no tienen texto var nombre= root[i].childNodes[1].textContent; var idCategoria= root[i].childNodes[3].textContent; //muestra #text en todos los indices pares alert(root[i].childNodes[0].nodeName); //se añade el fieldset con los datos correspondientes var divisor= document.getElementById("productos"); var campo= document.createElement("fieldset"); var texto= document.createTextNode("Nombre= "+nombre+" idcategoria= "+idCategoria); campo.appendChild(texto); divisor.appendChild(campo); } } } } httpRequest.open('GET', '../ajax/ObtenerProductos.php?math=' + Math.random(), true); httpRequest.send(null); return false; }
Código PHP:
Ver original
<?php $_Root= $_SERVER['DOCUMENT_ROOT']; require_once $_Root.'/ProductoDAO.php'; $_Consulta= ProductoDAO::BuscarTodosPorCategoria('pizza'); $doc = new DOMDocument(); $doc->formatOutput= true; $root = $doc->createElement('root'); $root = $doc->appendChild($root); foreach ($_Consulta as $Datos){ $producto= $doc->createElement('producto'); $producto= $root->appendChild($producto); $nombreTag = $doc->createElement('nombre'); $nombreTag = $producto->appendChild($nombreTag); $textNombre = $doc->createTextNode($Datos->getNombre()); $textNombre = $nombreTag->appendChild($textNombre); $idCategoria= $doc->createElement('idcategoria'); $idCategoria= $producto->appendChild($idCategoria); $textIDCategoria= $doc->createTextNode($Datos->getCategoria()); $textIDCategoria= $idCategoria->appendChild($textIDCategoria); } echo $doc->saveXML(); ?>
el problema lo puse en el alert(root[i].childNodes[0].nodeName); en la linea 56 del JS. Me muetra #text con cualquier indice par, o sea, al xml se le agregan datos que no los puse yo.
si necesitan mas informacion pidanla, recien estoy comenzando con JS y me costo mucho esto, pero no entiendo esa parte .
saludos