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] Impossible d'utiliser mon fichier XML sous IE


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 56
    Points
    56
    Par défaut [AJAX] Impossible d'utiliser mon fichier XML sous IE
    Bonjour,

    Pour un petit script de sondage, je génère les résultats en XML, sous la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE SONDAGE [
    	<!ELEMENT SONDAGE (QUESTION, REPONSES)>
    	<!ELEMENT QUESTION (#PCDATA)>
    	<!ELEMENT REPONSES (CHOIX+)>
    	<!ELEMENT CHOIX (#PCDATA)>
     
    	<!ATTLIST SONDAGE id_sondage CDATA #REQUIRED>
    	<!ATTLIST SONDAGE nb_rep CDATA #REQUIRED>
    	<!ATTLIST CHOIX id_choix CDATA #REQUIRED>
    	<!ATTLIST CHOIX nb_votes CDATA #REQUIRED>
    	]>
    	<SONDAGE id_sondage="1" nb_rep="0">
    		<QUESTION>
    			Aimez vous les yogourts ?
    		</QUESTION>
    		<REPONSES>
    			<CHOIX id_choix="0"
    				nb_votes="0">
    				oui
    			</CHOIX>
    			<CHOIX id_choix="1"
    				nb_votes="26">
    				non
    			</CHOIX>
    			<CHOIX id_choix="2"
    				nb_votes="8">
    				Vote blanc
    			</CHOIX>
    		</REPONSES>
    	</SONDAGE>
    Ensuite quand quelqun vote, on cré un objet xmlhttprequest, on envoie le vote, puis on récupère le fichier xml, qu'ensuite on va utiliser pour afficher les résultats.

    Sous Firefox ça marche impec', sous opera ça plante pour une raison obscure, mais pour l'instant je me concentre sur IE.

    J'ai cru comprendre que IE a du mal à récupérer une responseXML, j'ai donc fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	if (isIE == 0)
    	{
    		var res = xhr.responseXML; // assigner le fichier XML a une variable
    	}
    	else
    	{
    		var res = new ActiveXObject("Microsoft.XMLDOM");
    					res.async="false";
    		res.load(xhr.responseText);
    	}
    Et IE reconnait enfin "res" comme quelque chose d'autre que "null".

    Seulement, si je fais :
    alert(res.getElementsByTagName("SONDAGE"));

    ça m'affiche "[object]" mais quand je fais :
    alert(res.getElementsByTagName("SONDAGE")[0]);
    ça m'affiche "null".
    Pourtant ce n'est pas censé être "null" (il n'y a qu'à voir le fichier XML) vu que sous Firefox il récupère sans problème le noeud sondage.

    Maintenant je pense avoir cerné à peu près le problème mais je ne vois absolument pas comment le résoudre.
    J'espère que quelqun saura résoudre mon problème

    Cordialement,

    iLUV

  2. #2
    Membre actif
    Avatar de maxime.ohayon
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2007
    Messages : 113
    Points : 226
    Points
    226
    Par défaut
    Salut
    bon t'es pas loin de la solution fait un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var items = xmlDocument.getElementsByTagName("SONDAGE");
    et apres tu fais dans une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i=0;i<items.length;i++)
    {
                      var  id = items.item(i).getAttribute("id");                       
    }
    Max
    Faut faire l'ane pour avoir de l'avoine

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 56
    Points
    56
    Par défaut
    le soucis c'est qu'en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert(res.getElementsByTagName('SONDAGE').length);
    ça m'affiche 0 (sous IE, 1 sous firefox, ce qui est normal)

    edit:
    si je fais : alert(res.parseError.reason); juste après res.load(xhr.responseText); ça m'affiche : "alert(res.parseError.reason);"

    Alors que quand je fais alert(xhr.responseText); ça m'affiche le document XML...

    Reédit :
    Je n'étais effectivement pas loin du tout, à la place de load c'était loadXML
    ça marche maintenant, merci de ta réponse

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2014, 14h58
  2. Réponses: 1
    Dernier message: 22/11/2008, 20h50
  3. Utiliser un fichier XML sur un serveur FTP
    Par ired dans le forum Bases de données
    Réponses: 1
    Dernier message: 06/04/2005, 13h43
  4. Réponses: 2
    Dernier message: 28/09/2004, 09h41

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