11548 sujets

JavaScript, DOM et API Web HTML5

Bonsoir Smiley smile ,

J'aurais besoin de votre aide sur un problème que je rencontre ...

J'ai un document XML qui est chargé via l'objet xmlHttpRequest.

Il se présente sous cette forme :

<script> mon script </script>
<content> content </content>


J'essaie de récupérer les deux partie séparément, de manière à executer la partie script, et à afficher la partie content;

Je fais cà comme cela :


var reponse = xhr.responseXML;
var content = reponse.getElementsByTagName("content");
for(var v=0; v< content.length; v++){
	contenu = content[v].nodeValue;
	document.getElementById(cible).innerHTML=contenu;
}
var scripts = reponse.getElementsByTagName("script");
for(var v=0; v< scripts.length; v++){
	script = scripts[v].nodeValue;
	eval(script);
}


Aucune erreur, mais rien ne se produit Smiley sweatdrop
Et là j'avoue que je ne comprend pas...

Merci d'avance pour votre assistance!
Modifié par nakwa (18 Jun 2009 - 20:27)
Moi je ferais:


var reponse = xhr.responseXML;

var content = reponse.getElementsByTagName("content").item(0).data;
document.getElementById(cible).innerHTML = content;


var scripts = reponse.getElementsByTagName("script").item(0).data;

eval(scripts);


A vérifier pour le .data (moi je l'utilise car mes éléments dont encapsulés avec "<![CDATA[]]>")
Modifié par Dark$hadow (19 Jun 2009 - 15:20)
Pour vérifier la structure de ton xml, fais un :
alert(xhr.responseText);


et avant remplace xhr.responseXML par:
var reponse = xhr.responseXML.documentElement;
Bonjour,

Merci pour vos réponses Smiley cligne

Dark$hadow j'ai testé ta solution et différentes variantes mais elle ne me parais pas fonctionner....

J'ai essayé avec
content = reponse.getElementsByTagName("content").item(0).data;

item(0), item[0], avec data, sans data, avec item ou sans
et response = xhr.responseXML.documentElement; ou sans
Toutes les combinaisons quoi...

Sur le test avec alert :

- avec alert( responseText ) j'ai :

<script>
alert('ok');
</script>
<content>
	<div>
              blabla
        </div>
</content>

c'est ok.

- avec alert( responseXML ) j'ai :
[object XMLDocument]


L'erreur est :
Error encountered: 
readyStateTypeError: content is undefined


Smiley ohwell
Ouais ben la solution c'était

var contenu = xhr.responseXML.getElementsByTagName('content')[0].childNodes[0].nodeValue;

Sachant qu'un document XML doit absolument commencé par un tronc commun du genre <data>, et non pas deux élements comme je le faisais

Smiley ravi peace