Frage

Ich mache ein Netz, wo ich AJAX-Anforderungen stark verwenden, um ein XML-Dienst. In der Tat ist mein Web-Front-End mit fast kein Server zu löschen und verwendet AJAX mit kommunizieren das Back-End.

Alles ging gut (ich entwickelt und getestet in Ubuntu 9.04 und Firefox 3.0 als Browser). Ein Tag habe ich beschlossen, zu sehen, wie meine Web in IE8 hat ... Horror!

Es wurde nichts funktioniert, wie es wunderbar in Firefox tat. Um genauer zu sein, wurden die Request.HTML nicht funktioniert. Wie gesagt, verließ ich meine Web stark auf, dass, so funktionierte nichts.

verbrachte ich einen Tag versuchen, etwas zum Laufen zu bringen, aber ich hatte kein Glück .. Die einzige Schlussfolgerung, zu der ich war angekommen, dass die XML war falsch analysiert (Ich hoffe, dass ich in Fehler bin). Lassen Sie uns auf den Code bekommen:

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

});

zum Beispiel, dass Stück Code. In Firefox, es funktionierte perfekt. Es alarmiert eine ID (beispielsweise 7), es zeigte dann den Inhalt der Kategorie Element, zum Beispiel:

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

und dann zeigte er den Inhalt eines inneren Elements, in diesem Fall:

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

In IE8, der erste Alarm arbeitete OK (alarmierte 7) aber der nächste Alarm (alert (cat.get ( 'html'));) ergab eine leere Zeichenfolge und die letzten eine Ausnahme geworfen ... sagte, es etwas über die Subkategorie beeing null.

Was ich mit diesem geschlossenen Ganzen ist, dass die Elemente, bei denen analysiert korrekt in Firefox, aber in IE8 habe ich nur die Tags und Attribute OK, alles andere völlig falsch war (in der Tat fehlt). Ich meine, den inneren Gehalt an all die Elemente der Antwort, wo weg!

Andere Tatsache, könnten Sie verwenden: Code:

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

hmm was sonst ... oh yeah ... die Linie, die Sie oben (cat = $(cat);) sehen kommentiert war etwas Ich habe versucht zu tun, um dies zu beheben. Ich las in den Mootools Docs, die IE benötigt explizit zu nennen die $ Funktion auf alle Elemente, die Element-Magie zu bekommen ... aber das nicht alles reparieren.

Ich war so verzweifelt ... Ich habe sogar um mit mootools.js Code getüftelt

OK, so ... Was ich will sie, lieben mootool-Profis ist mir dieses Problem lösen zu helfen, denn ich brauche wirklich die Bahn in IE8 zu funktionieren, und in der Tat wählte ich Mootools über Kompatibilitätsprobleme zu vergessen ...

ps: wenn etwas nicht klar ist, fragen Sie bitte! Ich würde jede Hilfe dankbar: D

War es hilfreich?

Lösung

Ich hatte ein ähnliches Problem wie dies vor einiger Zeit mit jQuery. Das Problem war, dass im IE, die eingehenden Antwortdaten benötigt durch das Microsoft.XMLDOM ActiveX-Objekt behandelt werden.

Die allgemeinen Schritte sind:

  1. Instanziieren das ActiveX-Objekt.

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

  2. Direkt die eingehenden Antwortdaten und laden Sie es.

    oXmlDoc.loadXML(sXmlResponseData);

  3. Parse es nach Bedarf.

Sie können die vollständige Auflösung überprüfen hier .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top