Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/08/2013, 21:02
starfix
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 4 meses
Puntos: 25
Respuesta: ajax+php nodeName indices pares =#text

Bien, parece que el problema esta por el lado de PHP obviamente. Dejo la solución por si alguien tiene el mismo problema.


Resulta que la linea que sigue:

Código PHP:
Ver original
  1. $doc->formatOutput= true;

Formatea el archivo xml para que los navegadores los puedan presentar de una forma legible.
Cambiando true por false se corregiria mi problema y se eliminarian todos los saltos de linea, tabulaciones y espacios insertados por el mismo objeto php.
Ahora pude obtener la siguiente salida:

Código HTML:
Ver original
  1. <?xml version="1.0"?>
  2. <root><producto><nombre>Producto1</nombre><idcategoria>idCategoriaProducto1</idcategoria></producto><producto><nombre>Producto2</nombre><idcategoria>idCategoriaProducto2</idcategoria></producto><producto><nombre>Producto3</nombre><idcategoria>idCategoriaProducto3</idcategoria></producto></root>
  3. </body>
  4. </html>

esta salida me sirve para que mi codigo javascript funcione correctamente sin tener que aumentar de a 2 el indice de la lista de nodos hijos:

Código Javascript:
Ver original
  1. function cargarProductos(producto){
  2.    
  3.     var httpRequest;
  4.     if (window.XMLHttpRequest)
  5.     {
  6.             //El explorador implementa la interfaz de forma nativa
  7.             httpRequest = new XMLHttpRequest();
  8.     }
  9.     else if (window.ActiveXObject)
  10.     {
  11.             //El explorador permite crear objetos ActiveX
  12.             try {
  13.                     httpRequest = new ActiveXObject("MSXML2.XMLHTTP");
  14.             } catch (e) {
  15.                     try {
  16.                             httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
  17.                     } catch (e) {}
  18.             }
  19.     }
  20.    
  21.    
  22.     httpRequest.onreadystatechange = function() {
  23.         if (httpRequest.readyState == 4) {
  24.            
  25.             if (httpRequest.status ==200){
  26.  
  27.                    
  28.             var parser = new DOMParser();
  29.             var xmlDoc = parser.parseFromString(httpRequest.responseText, "application/xml");
  30.  
  31.            
  32.             var root= xmlDoc.getElementsByTagName("producto");
  33.  
  34.             for (var i=0; i<root.length; i++){         
  35.            
  36.                 var nombre= root[i].childNodes[0].textContent;
  37.                
  38.                 var idCategoria= root[i].childNodes[1].textContent;
  39.                
  40.                 var divisor= document.getElementById("productos");
  41.                 var campo= document.createElement("fieldset");
  42.                 var texto= document.createTextNode("Nombre= "+nombre+" idcategoria= "+idCategoria);
  43.                 campo.appendChild(texto);
  44.                 divisor.appendChild(campo);
  45.             }
  46.             }
  47.            
  48.            
  49.             }else alert(httpRequest.readyState);
  50.            
  51.         }
  52.    
  53.     httpRequest.open('GET', '../ajax/ObtenerProductos.php?math=' + Math.random(), true);
  54.     httpRequest.send(null);
  55.  
  56.     return false;
  57. }

Como se pueden ver en las lineas 36 y 38, accedo a los nodos hijos con los indices correctos.

ahora a seguir con esto que me está sacando la cabeza