Je suis en train de faire un site web où j'utilise beaucoup les requêtes AJAX pour un service XML. En fait, mon web est un front-end avec presque serveur et utilise AJAX pour communiquer avec le back-end. le back-end.
Tout se passait bien (j'ai développé et testé dans Ubuntu 9.04 et Firefox 3.0 comme navigateur). Un jour, j'ai décidé de voir comment mon web se comportait dans IE8... l'horreur !
Rien ne fonctionnait comme c'était merveilleusement le cas dans Firefox. Pour être plus précis, les Request.HTML ne fonctionnaient pas. Comme je l'ai dit, mon site web dépendait fortement 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 suis dans l'erreur). 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, il fonctionne parfaitement. Il a alerté un ID (par exemple, 7), puis il montre le contenu de l'élément catégorie, par exemple :
<subcategory id='1'>
<category_id>7</category_id>
<code>ACTIO</code>
<name>Action</name>
</subcategory>
et ensuite il a montré le contenu d'un élément intérieur, dans ce cas :
<category_id>7</category_id>
<code>ACTIO</code>
<name>Action</name>
Dans IE8, la première alerte fonctionne correctement (7 alertes). mais l'alerte suivante (alert(cat.get('html')) ;) a donné une chaîne vide et la dernière a déclenché une exception... elle a dit quelque chose à propos de la sous-catégorie étant nulle.
Ce que j'ai conclu avec tout ça, c'est que les éléments étaient analysés correctement dans Firefox, mais dans IE8 je n'ai eu que les balises et les attributs OK, tout le reste était complètement faux (en fait, absent). Je veux dire, le contenu interne de tous les de la réponse avait disparu !
Autre fait que vous pourriez utiliser : ce code : alert(cat.get('tag')) ; résultat dans Firefox : catégorie IE8 : /category <-----------( ?)
hmm quoi d'autre... oh oui... la ligne que vous voyez commentée ci-dessus (cat = $(cat) ;) était quelque chose que j'ai essayé de faire pour résoudre ce problème. J'ai lu dans les Docs de mootools que IE avait besoin de d'appeler explicitement la fonction $ sur les éléments pour obtenir toute la magie de l'élément ... mais ceci mais cela n'a rien résolu.
J'étais tellement désespéré... J'ai même bidouillé le code de mootools.js.
OK, donc... Ce que je veux, chers mootool-pro's, c'est que vous m'aidiez à résoudre ce problème, car j'ai VRAIMENT besoin que le web fonctionne dans IE8, et en fait j'ai choisi mootools pour oublier les problèmes de compatibilité...
Eh bien ... désolé pour mon anglais chancelant et la longueur du post ! Merci beaucoup d'avance !
Manuel
ps : si quelque chose n'est pas clair, n'hésitez pas à DEMANDER ! J'apprécie toute aide :D