Question

Je fais un site Web où j'utilise beaucoup les demandes AJAX pour un service XML. En fait, mon site Web est un front-end avec presque aucun serveur et utilise AJAX pour communiquer avec le back-end.

Tout se passait bien (j'ai développé et testé Ubuntu 9.04) et Firefox 3.0 en tant que navigateur). Un jour, j'ai décidé de voir comment mon site Web fonctionnait dans IE8 ... horreur!

Rien ne fonctionnait comme cela fonctionnait à merveille dans Firefox. Pour être plus précis, les Request.HTML ne fonctionnaient pas. Comme je l'ai dit, mon site Web dépendait beaucoup de cela, donc rien ne fonctionnait.

J'ai passé une journée à essayer de faire fonctionner quelque chose mais je n'ai pas eu de chance .. La seule conclusion à laquelle je suis arrivé est que le XML était incorrectement analysé (J'espère que je me trompe). Passons au code:

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

});

par exemple, ce morceau de code. Dans Firefox, cela a fonctionné parfaitement. Il a alerté un identifiant (par exemple, 7), puis il a montré le contenu de l'élément category, par exemple:

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

puis il a montré le contenu d'un élément interne, dans ce cas:

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

Dans IE8, la première alerte fonctionnait correctement (alertée 7) mais l'alerte suivante (alert (cat.get ('html'));) a donné une chaîne vide et le dernier a lancé une exception ... il a dit quelque chose à propos de la sous-catégorie être nul.

Ce que j'ai conclu avec tout cela, c'est que les éléments analysés correctement dans Firefox, mais dans IE8, je n'ai que les balises et les attributs OK, tout le reste était complètement faux (en fait, manquant). Je veux dire, le contenu intérieur de tous les des éléments de la réponse ont disparu!

Autre fait que vous pourriez utiliser: ce code:

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

hmm quoi d'autre ... oh yeah ... la ligne que vous voyez commentée ci-dessus ( cat = $ (cat); ) était quelque chose J'ai essayé de faire pour résoudre ce problème. J'ai lu dans les documents mootools que IE avait besoin appeler explicitement la fonction $ sur les éléments pour obtenir tous les éléments-magie ... mais cela n'a rien réparé.

J'étais tellement désespéré ... J'ai même bidouillé avec mootools.js code

OK, alors ... Ce que je veux vous, chers mootool-pro, c'est m'aider à résoudre ce problème, car j’ai VRAIMENT besoin du Web pour fonctionner dans IE8, et en fait j’ai choisi mootools à oublier les problèmes de compatibilité ...

ps: si quelque chose n'est pas clair, demandez s'il vous plaît! J'apprécierais toute aide: D

Était-ce utile?

La solution

J'ai eu un problème similaire comme celui-ci avec jQuery il y a quelque temps. Le problème était que, dans IE, les données de réponse entrantes devaient être traitées par l'objet ActiveX Microsoft.XMLDOM .

Les étapes générales sont les suivantes:

  1. Instanciez l'objet ActiveX.

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

  2. Transmettez les données de réponse entrantes et chargez-les.

    oXmlDoc.loadXML (sXmlResponseData);

  3. Analysez-le si nécessaire.

Vous pouvez consulter la résolution intégrale ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top