Problème d'affichage du fichier xml en responseXML mais pas
Posté : 18 févr. 2008, 16:21
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
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...
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ù...
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>
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);