Domanda

Sto realizzando una rete in cui utilizzo fortemente le richieste AJAX un servizio XML. In effetti, il mio web è un front-end con quasi nessun server e utilizza AJAX per comunicare il back-end.

Tutto stava andando bene (ho sviluppato e testato in Ubuntu 9.04 e Firefox 3.0 come browser). Un giorno ho deciso di vedere come ha fatto il mio web in IE8 ... orrore!

Niente funzionava come meravigliosamente su Firefox. Per essere più specifici, i file Request.HTML non funzionavano. Come ho detto, la mia rete si basava molto su questo, quindi nulla ha funzionato

Ho passato una giornata a provare a far funzionare qualcosa ma non ho avuto fortuna .. L'unica conclusione a cui sono arrivato è stata l'XML analizzato in modo errato (Spero di sbagliarmi). Andiamo al codice:

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(){...}

});

per esempio, quel pezzo di codice. In Firefox, ha funzionato perfettamente. Ha avvisato un ID (ad esempio, 7), quindi mostrava il contenuto dell'elemento categoria, ad esempio:

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

e quindi ha mostrato il contenuto di alcuni elementi interni, in questo caso:

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

In IE8, il primo avviso ha funzionato correttamente (avviso 7) ma l'avviso successivo (alert (cat.get ('html'));) ha dato una stringa vuota e l'ultimo ha lanciato un'eccezione ... ha detto qualcosa sulla sottocategoria essere null.

Quello che ho concluso con questo è che gli elementi sono stati analizzati correttamente in Firefox, ma in IE8 ho solo i tag e gli attributi OK, tutto il resto era completamente sbagliato (in effetti, mancante). Voglio dire, il contenuto interno di tutti i gli elementi della risposta sono finiti!

Altro fatto che potresti usare: questo codice:

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

hmm cos'altro ... oh sì ... la linea che vedi commentata sopra ( cat = $ (cat); ) era qualcosa Ho provato a fare per risolvere questo problema. Ho letto nei documenti mootools di cui IE aveva bisogno chiamare esplicitamente la funzione $ sugli elementi per ottenere tutta la magia degli elementi ... ma questo non ha risolto nulla.

Ero così disperato ... Ho persino armeggiato con il codice mootools.js

OK, quindi ... Quello che ti voglio, caro mootool-pro, è di aiutarmi a risolvere questo problema, poiché ho davvero bisogno che il web funzioni in IE8, e in effetti ho scelto mootools per dimenticare i problemi di compatibilità ...

ps: se qualcosa non è chiaro, per favore CHIEDI! Gradirei qualsiasi aiuto: D

È stato utile?

Soluzione

Ho avuto un problema simile come questo qualche tempo fa usando jQuery. Il problema era che, in IE, i dati di risposta in entrata dovevano essere gestiti dall'oggetto ActiveX Microsoft.XMLDOM .

I passaggi generali sono:

  1. Crea un'istanza dell'oggetto ActiveX.

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

  2. Passa i dati di risposta in arrivo e caricali.

    oXmlDoc.loadXML (sXmlResponseData);

  3. Analizzalo secondo necessità.

Puoi consultare la risoluzione completa qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top