Pregunta

Estoy haciendo una web donde uso mucho las solicitudes de AJAX para Un servicio XML. De hecho, mi web es un front-end con casi no tiene servidor alguno y utiliza AJAX para comunicarse con el back-end.

Todo iba bien (desarrollé y probé en Ubuntu 9.04 y Firefox 3.0 como navegador). Un día decidí ver cómo funcionaba mi web en IE8 ... horror!

Nada funcionaba tan maravillosamente como en Firefox. Para ser más específicos, los Request.HTML no funcionaban. Como dije, mi web dependía mucho de eso, así que nada funcionó.

Pasé un día tratando de hacer funcionar algo, pero no tuve suerte ... La única conclusión a la que llegué fue que el XML era analizado incorrectamente (Espero estar en error). Vayamos al código:

var req = new Request.HTML({
        url: 'service/Catalog.groovy',

        onSuccess: function(responseTree, responseElements) {

            var catz = responseElements.filter('category');
            catz.each(function(cat){
                // cat = $(cat);
                var cat_id = cat.get('id');
                var subcategory = cat.getElement('subcategory');
                alert(cat_id);
                alert(cat.get('html'));
                alert(subcategory.get('html'));
           }
       },
       onFailure: function(){...}

});

por ejemplo, ese fragmento de código. En Firefox, funcionó perfectamente. Alertó una identificación (por ejemplo, 7), luego mostró el contenido del elemento de categoría, por ejemplo:

<subcategory id='1'>
      <category_id>7</category_id>
      <code>ACTIO</code>
      <name>Action</name>
</subcategory>

y luego mostró el contenido de algún elemento interno, en este caso:

<category_id>7</category_id>
<code>ACTIO</code>
<name>Action</name>

En IE8, la primera alerta funcionó bien (alerta 7) pero la siguiente alerta (alert (cat.get ('html'));) dio una cadena vacía y el último lanzó una excepción ... decía algo sobre la subcategoría siendo nulo.

Lo que concluí con todo esto es que los elementos se analizaron correctamente en Firefox, pero en IE8 solo obtuve las etiquetas y los atributos OK, todo lo demas estaba completamente equivocado (de hecho, desaparecido). Quiero decir, el contenido interno de todos elementos de la respuesta donde se fueron!

Otro hecho que podría usar: este código:

alert(cat.get('tag')); resulted in
      Firefox: category
      IE8: /category <-----------(?)

hmm qué más ... oh sí ... la línea que ves comentada anteriormente ( cat = $ (cat); ) era alguna cosa Traté de hacer para arreglar esto. Leí en los documentos de mootools que IE necesitaba llamar explícitamente la función $ en elementos para obtener toda la Magia de elemento ... pero esto no solucionó nada.

Estaba tan desesperado ... incluso jugueteé con mootools.js code

OK, entonces ... Lo que quiero, queridos mootool-pro es ayudarme a resolver este problema, para REALMENTE necesito que la web funcione en IE8, y de hecho elegí mootools para olvidarse de los problemas de compatibilidad ...

ps: si algo no está claro, por favor PREGUNTE! Agradecería cualquier ayuda: D

¿Fue útil?

Solución

Hace algún tiempo tuve un problema similar como este usando jQuery. El problema era que, en IE, los datos de respuesta entrantes debían ser manejados por el objeto ActiveX Microsoft.XMLDOM .

Los pasos generales son:

  1. Crea una instancia del objeto ActiveX.

    var oXmlDoc = new ActiveXObject (" Microsoft.XMLDOM ");

  2. Pásale los datos de respuesta entrantes y cárgalos.

    oXmlDoc.loadXML(sXmlResponseData);

  3. Analícelo según sea necesario.

Puede consultar la resolución completa aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top