Page 1 sur 1

Problème d'affichage du fichier xml en responseXML mais pas

Posté : 18 févr. 2008, 16:21
par Aureusms
Bonjour,

J'essaye de m'initier à l'AJAX et de ce côté en mode responseText tout se passe bien.
Cependant voulant allez un peu plus loin j'essaye la partie xml de l'AJAX et là je coince.

Voici l'xml envoyé depuis AJAX : via
$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>
                     <articles>'.$xml.'</articles>';
              header ("Content-Type :text/xml; charset=ISO-8859-1");
              echo $xml;
où xml est une sortie de base de donnée. Firebug me donne ce résultat ci :

Code : Tout sélectionner

<?xml version="1.0" encoding="ISO-8859-1"?> <articles> <article> <reference>P801</reference> <description_fr>Lampe à cathode creuse - 37 mm Aluminium - Al</description_fr> <description_uk>Hollow cathode lamp à cathode creuse - 37 mm Aluminium - </description_uk> <reference_constructeur>56101220045</reference_constructeur> <prix_client_euro>10000000</prix_client_euro> </article> <article> <reference>P801</reference> <description_fr>Lampe à cathode creuse - 37 mm Aluminium - Al</description_fr> <description_uk>Hollow cathode lamp à cathode creuse - 37 mm Aluminium - Al </description_uk> <reference_constructeur>200-38422-01HAB</reference_constructeur> <prix_client_euro>2000000000</prix_client_euro> </article> <article> <reference>P801C</reference> <description_fr>Lampe à cathode creuse 37 mm codée Aluminium - Al</description_fr> <description_uk>Hollow cathod lamp 37 mm coded Aluminium - Al</description_uk> <reference_constructeur>5610100100</reference_constructeur> <prix_client_euro>30000000000</prix_client_euro> </article> </articles>
de l'autre côté j'ai créé une fonction Javascript qui normalement inclus dans une div les différents résultats. Mais c'est là que rien ne sort...

Code : Tout sélectionner

var xhr = Donne_Http_Request(); //vers la fonction qui test XMLhttprequest //déjà testé tout est Ok xhr.onreadystatechange = function() { // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if (xhr.readyState == 4 && xhr.status == 200) { var reponse = xhr.responseXML.documentElement; var articl = reponse.getElementsByTagName('article'); //j'ai mis articl pour éviter les problèmes d'interaction var html = ''; count = articl.length; //donne toujours 0 - le problème vient un peu d'ici for (i = 0; i < count; i++) { html += '<div>'; html += '<span>'+ articl[i].getElementsByTagName("reference")[0].firstChild.nodeValue +'</span> - '; html += '<span>'+ articl[i].getElementsByTagName("description_fr")[0].firstChild.nodeValue + +'</span>'; html += '</div>'; } // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('resultat_recherche').innerHTML += html; document.getElementById('resultat_recherche').style.display='block'; } } // Ici on va voir comment faire du post xhr.open("POST","ajax_tri_par_article.php",true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send("search="+search);
J'ai essayé dans la partie de forcer for (i = 0; i < count; i++) en for (i = 0; i < 3; i++) et là il me dit que "articl " n'est pas défini... (articl has no properties). Bref il ya un truc que je n'ai pas fais mais je ne sais pas où...

Posté : 19 févr. 2008, 16:53
par Hubert Roksor
Utilise Firebug pour mettre un breakpoint sur la ligne de ton "for", puis regarde le contenu articl. Ça devrait au moins te mettre sur la voie. Toujours dans Firebug, tu peux utiliser la première flèche bleu pour faire avancer d'une ligne à la fois.

Posté : 20 févr. 2008, 21:46
par Aureusms
Bonsoir et merci de ta réponse.
En effet j'ai exploré un peu les réponse du serveur et il s'avère que j'ai toujours en amont de mon xml " /n/r/n/r". Pourtant dans mon fichier php qui génère le xml j'ai juste qu'un echo $sortiexml; et rien d'autre (en sortie j'entends bien).

J'ai remarqué que j'ai aussi cette réponse (saut et retour de ligne) en ResponseText masi je ne sais pas d'où cela vient. Une piste ?