Bonjour,
Pour un petit script de sondage, je génère les résultats en XML, sous la forme suivante :
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.
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>
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 :
Et IE reconnait enfin "res" comme quelque chose d'autre que "null".
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); }
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
Partager