IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Parsage XML ne fonctionne pas sous IE!


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut [AJAX] Parsage XML ne fonctionne pas sous IE!
    Bonjour,

    Je ne parviens pas à parser les données xml reçue par un objet Microsoft.XMLHTTP.

    Sous FF (XMLHttpRequest) c'est vraiment pas un problème mais comme dab IE vient m'em****er!

    Voici l'exemple de fichier xml retour :
    <?xml version='1.0'?>
    <donnees xml:lang='FR'>
    <label>Jean</label>
    <label>Dupont</label>
    </donnees>
    Donc mon objet XML je le parse comme ceci sous FF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var donnees = xhr.responseXML.getElementsByTagName("label");
    Que je récupère comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var prenom = donnees[0].firstChild.nodeValue;
    var nom = donnees[1].firstChild.nodeValue;
    Sous IE ceci ne fonctionne donc pas. J'ai essayé de savoir la valeur de 'donnees', il me répond 'Objet' => impeccable. Ensuite je lui demande la valeur de 'donnees[0].firstChild' et j'obtiens la valeur null => pas normal

    Quelqu'un sait comment je pourrais résoudre ça?

    Merci et bonne soirée!

    webrider

  2. #2
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Citation Envoyé par webrider
    <?xml version='1.0'?>
    <donnees xml:lang='FR'>
    <label>Jean</label>
    <label>Dupont</label>
    </donnees>
    Au pif comme ça, pourquoi ne pas utiliser JSON ?

    Ca te donnerait une simple chaine de caractères de ce genre à envoyer à javascript via XMLHttpRequest (ou l'équivalent MS) : ({"prenom":"Jean","nom":"Dupont"})

    que tu récupères ainsi : var myData = eval(xhr.responseText);

    et que tu utilises ensuite de cette manière :
    var prenom = myData.prenom;
    var nom = myData.nom;

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut davcha,

    Ton idée est intéressante mais tout est déjà écrit et je ne voudrais pas bouger à ce script qui me génère le xml, l'exemple que j'ai mis est simplifié mais est plus complexe dans la réalité.

    J'ai vérifié la compatibilité de la fonction getElementsByTagName() qui est compatible IE5+ donc de ce côté là il ne devrait pas y avoir d'erreur.
    J'obtiens donc donnees sous forme de tableau pour mes labels avec :
    donnees[0] => premier label
    donnees[1] => second label
    Quand je demande le firstChild de chacun des "labels" je demande donc le noeud texte sous-jacent puis sa valeur par nodeValue. Toutes les propriétés et méthodes sont compatibles IE5+ donc pourquoi ce genre de problème? Pourquoi une valeur null pour firstChild?

    Vous qui parsez du XML en Ajax, comment faites-vous pour récupérer les données sous IE?

    Merci.

    EDIT : indice supplémentaire -> je demande donnees.length -> FF me donne le nombre de labels -> IE me donne 0
    Dernière modification par webrider ; 23/03/2007 à 10h52.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ok les choses se précisent!

    J'ai demandé à chaque navigateur d'exécuter directement le script me générant le xml. Le problème viendrait de caractères accentués acceptés par FF mais pas IE.

    Par exemple ceci passe sous FF
    <?xml version='1.0'?>
    <donnees xml:lang='FR'>
    <label>Grégoire</label>
    <label>Dupont</label>
    </donnees>
    Mais IE me dit qu'il y a une erreur de caractère et m'affiche
    <label>Gr
    Malheureusement j'ai besoin des caractères accentués, comment pourrais-je contourner ce problème? J'ai pourtant fixé le charset dans le script générant le xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-type: text/xml; Charset=ISO-8859-1");
    Une solution?

    webrider

  5. #5
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Par défaut
    En précisant l'encodage dans la balise xml peut-être ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version='1.0' encoding="iso-8859-1"?>

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2007
    Messages : 247
    Par défaut Utf-8...
    salut,

    moi je suis en UTF-8 et ça passe nickel... cela dit j'ai également encodé mes caractères spéciaux et je pense que c'est le mieux à faire (cad : é => &eacute; , etc.....)

    cela dit mon parse ne fonctionne sous IE que si je génère mon xml à partir d'un fichier PHP, autrement dit si ma requête pointe un xml statique, je ne peux rien faire de mon responseXML !!

    une idée ?

    edit : j'obtiens en fait une erreur 405 "méthode POST demandée non-autorisée pour cet URL" [sauf que je suis en GET] !

  7. #7
    Invité
    Invité(e)
    Par défaut
    La version de Nighty est excellente, spécifier l'encodage par un header() en PHP ne suffit donc pas et est cause de plantage sous IE (FF le prend très bien).

    jeje13009 pourrais-tu nous donner un bout de ton xml statique ainsi que les quelques lignes de l'appel de ce fichier svp? On va regarder pourquoi ça passe pas, il n'y a normalement aucune raison que ça foire!

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2007
    Messages : 247
    Par défaut
    salut,

    voici le lien vers le topic dans lequel je parle de mon pb :
    http://www.developpez.net/forums/sho...d.php?t=300524 ;


    ce soir je posterai le bout de code comme demandé...

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Tutoriel ajax du site ne fonctionne pas sous IE 9
    Par Super_carotte dans le forum AJAX
    Réponses: 2
    Dernier message: 20/01/2015, 10h34
  2. [CakePHP] Autocompletion Ajax ne fonctionne pas sous ie
    Par Tybaal dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 25/09/2011, 01h41
  3. [AJAX] ajax et xml ne fonctionnant pas sous Firefox
    Par Phpdebut dans le forum AJAX
    Réponses: 7
    Dernier message: 03/02/2010, 12h15
  4. [AJAX] AJAX qui ne fonctionne pas sous IE
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 30/05/2008, 11h01
  5. [AJAX] Code tuto Ajax fonctionne pas sous FF, mais IE et OP sont OK
    Par hugo69 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 08/01/2007, 21h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo