11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

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


<?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 :


	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 Smiley smile

Cordialement,

iLUV

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...

Reedit:
ça marche maintenant, c'était "loadXML" et pas "load" Smiley smile
Modifié par iLUV (07 Jun 2007 - 12:57)