![]() |
destripar objeto Ajax Hola: Siempre he pensado que conociendo los subobjetos de los objetos, se puede aprender algo más de los comportamientod de cada navegador y como implementan eso mismo: los objetos. Basándome en el destripador, acabo de subir esta página: Destripando objetos Ajax, mostrando cada elemento de los objetos ajax en cada uno de los cambios de estado (onreadystatechange) La idea de este mensaje es sacar conclusiones sobre los objetos ajax, sus atributos y subobjetos (vaya la redundancia), y también ver la mejor forma de implementar rutinas para encontrar esos datos. Por ahora, un primer problema es no poder destripar el objeto responseXML con ie7, que creo que es el objeto más importante para desglosar, ya que es una de las mejores formas de obtener la información requerida. Sobre responseText (objeto string), he notado que no hace falta esperar al "readystate 4", ya que en el estado 3 ya está accesible. Siguiendo con responseXML, se puede crear un árbol DOM, buscando los nodos (desde el array childNodes) con nodeType=1 (tags), se puede obtener cada nombre y valor (nodeName y nodeValue) de cada etiqueta, además de obtenerse sus childNodes pudiendose hacer un recorrido recursivo. Otra cosa que me pareció interesante es que esos tags también tienen su array de attributes, pudiendose guardar datos en esos mismos atributos, siendo de esa manera innecesaria un anidamiento de tags con un solo valor asociado. A medida que vaya encontrando (o recordando) conclusiones las iré comentando... Sobre el código js lo inserto con un include php, y se puede ver en este enlace: ajax.js, si alguien quiere aportar alguna mejora, será bienvenida, y si alguna cosa no se entiende, no tendré problemas en comentarlo. Saludos :arriba: |
Respuesta: destripar objeto Ajax :aplauso: Simplemente, genial!!! (Lastima que deba esparcir karma a otros antes de volver a dártelo) |
Respuesta: destripar objeto Ajax Cita:
Estaba seguro que te ibas a interesar en el tema (¡te conozco!... :risa:), y creo que eres de los que aportan cosas interesantes... espero que así sea (amén). aprovecho para comentar un poco más sobre el código... nunca me ha gustado el método eval, y estoy convencido de que no es necesario en la mayoría de los casos que se usa, y un caso en el que se suele usar es obtener objetos a partir de cadena, por eso el caso de el método objetando... Código: function objetando(objeto_base, subs) {Creo que el uso de la recursión es una cosa interesante. Saludos :arriba: |
Respuesta: destripar objeto Ajax Muy bueno caricatos, es muy interesante, esperemos que esto inspire a los demas a aprender todo lo que pueden hacer via AJAX. |
Respuesta: destripar objeto Ajax Sin comentarios. Realmente sensacional. |
Respuesta: destripar objeto Ajax Hola: Con las primeras conclusiones, me puse a retocar una página que tengo para administrar una galería de imágenes con comentarios, y en ella implementé un sistema de búsqueda paginada, generando el listado con un formato así: Código: <listado>La solución, rápida y muy chapucera, fué con el reemplazo de las coincidencias en el server (ereg_replace()... :pensando:) La verdad es que pensé usar otras cosas como htmlspecialschars o htmlentities, o addslashes, pero luego en local se decodificaban mal tanto con unescape como con decodeURI... creo que es una buena pregunta para hacer. Otra alternativa sería crear también el doctype (tal vez en la misma respuesta...) Añadí a la página un nuevo botón con la misma respuesta pero añadiéndole una línea que provoca error. Código: <error provocado_por="&">para más inrri "&"</error>Código: Error de parseo XML: malformadoCódigo: Error: malformadoSaludos :arriba: |
Respuesta: destripar objeto Ajax loading........ bueno los atributos deberian tener htmlentities y el contenido de un nodo estar entre CDATA para evitar errores. Cita:
Voy a explorar el código para ver en que puedo ayudar ;) Respecto a IE.. si usas directamente "childNodes" de un TAG. seguramente te saltan errores porque a los TAGS de tipo "#text" y "#comment" no se puede acceder a ese método/propiedad... simplemente salta ERROR en IE. asi que.. al momento de hacer una busqueda recursiva con "childNodes" añadas un filtro en "nodeName" para excluir a los elementos de tipo "#text" y "#comment". Tambien añadir que los XML que tienen un "\n" son tomados como NODOS en el XMLParser de IE. connection closed. |
Respuesta: destripar objeto Ajax Hola: ¡Qué tal MaBoRaK!... Sabía que te interesarías por el tema :aplauso: Bueno, los nombres de los atributos normalmente son correctos, pero sus valores pueden tener caracteres especiales que pueden dar problemas... y creo que con htmlentities ya lo probé (de todos modos lo probaré nuevamente)... y lo de CDATA creo que lo vi por alguna parte... veré que hacer... El error en ie lo provoca el bucle for, y los valores obtenidos los filtro con un try/catch... Lo de los contenidos "\n" ya lo sabía del otro destripador, pero son solo conclusiones lo qiue busco. Saludos :arriba: |
Respuesta: destripar objeto Ajax Hola: Ya he visto lo de htmlentities y CDATA, y puse unos arreglos en la página, donde también me preocupé de la estética. Puse un sistema de pestañas, donde espero ir poniendo las conclusiones, y algunos retoque finales sobre el contenido... Sobre el error en ie, intenté destripar a partir del objeto Ajax.responseXML, e incluso desde Ajax.responseXML.documentElement, modificando el bucle así: Código: Ajax.onreadystatechange = function() {Saludos :arriba: |
Respuesta: destripar objeto Ajax Hola: He conseguido que explorer no genere el el error que antes comentaba, haciendo una copia del objeto Ajax: Código: _Ajax = objetoAjax();Pensaba poner como próxima conclusión la forma de conseguir que no se genere un XML mal formado (excelente aporte de MaBoRaK). Saludos :arriba: |
| La zona horaria es GMT -6. Ahora son las 00:30. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.