Traitement de données xml (ajax)

Résolu/Fermé
skflers61 Messages postés 43 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 21 novembre 2014 - 10 avril 2014 à 09:14
cyril1982 Messages postés 110 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 19 septembre 2018 - 10 avril 2014 à 12:58
Bonjour,

Je me suis lancé dans l'ajax il y a quelques jours et je bloque sur le traitement de données xml crée à partir d'une requète ajax.

Quand je fait ma requète ajax, je crée du code xml qui ressemble à ceci:
<?xml version="1.0" encoding="utf-8"?>
<TABLE BORDER='1'>
	<TR>
		<TH> Nom PROCESS </TH>
		<TH> Nom GAMME DE MESURE</TH>
		<TH> Poste </TH>
		<TH> Code produit </TH>
	</TR>
	<TR>
		<TD id="GEX" name="GEX">0000__119</TD>
		<TD id="GME" name="GME">VI_967828</TD>
		<TD id="PO" name="PO">00</TD>
		<TD id="TYP" name="TYP">PCA00.08_</TD>
	</TR>
	<TR>
		<TD id="GEX" name="GEX">RGR_000</TD>
		<TD id="GME" name="GME">VI_96782</TD>
		<TD id="PO" name="PO">05600</TD>
		<TD id="TYP" name="TYP">8_0101</TD>
	</TR>
</table>

et je voudrais que se tableau s'affiche directement dans ma page, c.a.d que le code HTML soit traité.

Pour cela j'ai une fonction readDataResultat:
function readDataResultat(oData) {
	var xml = oData;
	var root_node = xml.getElementsByTagName('TABLE').item(0);
	

	for(var h = 0;h< root_node.childNodes.length;h++){
	  var fils = root_node.childNodes[h];
	  if(fils.nodeType==1){
		alert(fils.firstChild.data)
	  }
	}
	
	var fragment = document.createDocumentFragment();
	for(var h = 0;h< root_node.childNodes.length;h++){
	  var fils = root_node.childNodes[h];
	  if(fils.nodeType==1){
		var el = document.createElement("div")
		el.appendChild( document.createTextNode(fils.firstChild.data));
		fragment.appendChild(el);
	  }
	}
	var dmc = document.getElementById("TABLEAUgammeM");
	dmc.appendChild(fragment);
}

ps: Comme je ne suis pas un pro de Js, j'ai récupérer le code ici http://www.aliasdmc.fr/coursjavas/cours_javascript167.html et j'ai essayé de l'adapter.

Avec cela, je n'est pas d'erreur mais sa ne m'affiche pas mon tableau (sa m'affiche juste 3 fois undefined).

Alors je ne sais pas si je suis sur la bonne route avec ceci.

Ps: j'ai entendu parlé du XSLT pour afficher les données provenant du XML, je ne sais pas si je dois utiliser ça.



J'ai besoin d'un peu d'aide svp.

Merci pour vos réponse.

3 réponses

cyril1982 Messages postés 110 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 19 septembre 2018 12
10 avril 2014 à 09:26
Bonjour,

Le plus simple serait que ta requête ajax retourne directement du html, tu n'aurais pas à parser le xml par la suite.
0
skflers61 Messages postés 43 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 21 novembre 2014
10 avril 2014 à 09:39
Merci pour ta réponse rapide.


Pour renvoyer du HTML je dois juste enlever la balise <?xml version="1.0" encoding="utf-8"?> et mettre des balise <html> c'est ça?

Une autre question, je dois laisser responseXML dans ma requète? il n'existe pas d'attribut responseHTML je crois?

Enfin, je voudrais pouvoir modifier ce tableau ensuite pour rajouter des lignes ou des colonnes, est-ce possible?
0
cyril1982 Messages postés 110 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 19 septembre 2018 12
10 avril 2014 à 12:58
Effectivement il faut enlever la balise xml, par contre il ne faut pas ajouter de balise html.

Il faut utiliser l'attribut responseText. Ensuite tu peux affecter à ta div "dmc" le contenu de cet attribut :

var dmc = document.getElementById("TABLEAUgammeM");
dmc.innerHTML = monObjectAjx.responseText


Bon courage
0