Page 1 sur 1

problème de remplissage d'une liste javascript, xml et php

Posté : 20 juil. 2011, 13:34
par niz208
Salut tous le monde,
Y a-t-il qq1 qui peut m'aider à trouver le(s) erreurs(s) dans mes codes car celui de javascript n'affiche rien. ( la liste est toujours vide)
Le principe consiste à remplir une liste javascript, par XML créée en PHP
Merci d'avance.
Mon code Html

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="xhr.js" type="text/javascript"></script> </head> <body> <form id="form1" name="form1" method="post" action=""> La liste des élèments: <select name="element" id="element" > </select> </form> </body> </html>
Code xhr.js

Code : Tout sélectionner

window.onload = recuperation_elements(); function recuperation_elements() { var vxhr = testxhr(); if (vxhr) { vxhr.onreadystatechange = function(){ if (vxhr.readyState==4 && vxhr.status== 200 ) { exploiter_elements(vxhr.responseXML); } } vxhr.open("GET" , "element.php" , true); vxhr.send(null); } else { alert("un problème de XMLHttprequest") } } function exploiter_elementst(arg) { var xx= arg.getElementsByTagName('AA'); var nb = xx.length; alert(nb);// cet alert m'affiche toujours un zéro for (var i = 0 ; i< nb ; i ++ ){ var yy = xx[i]; var lib = yy.getElementsByTagName('BB')[0].childNodes[0].nodeValue; var dir = yy.getElementsByTagName('CC')[0].childNodes[0].nodeValue; nouvel_element = new Option(lib,dir,false,false); document.form1.element.options[document.form1.element.length] = nouvel_element; } } function testxhr() { var xhr = null; if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur ; alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr; }
code element.php

Code : Tout sélectionner

 <?php                  require_once("MesFonctionsPhp.php");        session_start();        header('Content-Type: text/xml');        header('Cache-Control: no-cache, must-revalidate');        $connexion = connexion($_SESSION['host'],$_SESSION['user'],$_SESSION['passe'],$_SESSION['base']);        $resultat = mysql_query( "SELECT * FROM table1 order by abc;") ;        $xml = '<?xml version="1.0" encoding="utf-8"?>';        $xml .='<XX>';               while($ligne = mysql_fetch_array($resultat)){           $xml .='<AA>';           $xml .='<BB>'.$ligne['abc'].'</BB>';           $xml .='<CC>'.$ligne['libelle'].'</cc>';           $xml .='</AA>';                    }          $xml .='</XX>';                  echo $xml;                       ?>

Re: problème de remplissage d'une liste javascript, xml et php

Posté : 22 juil. 2011, 01:07
par devlop78
Tu peux faire des alert() à plusieurs endroits dans ton code pour tester certaines variables, et si tu es sous Firefox, tu as Firebug qui te permet de voir le DOM, tu as la console JavaScript native à Firefox, et sous Google Chrome tu as des outils similaires. Tu peux aussi, depuis la console Firefox, voir le traffic avec ton serveur, et tu as d'autres extensions qui affichent plus d'infos.

A coté, si c'est pour transmettre des données dans une structure sans signification, tu devrais regarder du côté de JSON, qui est moins verbeux, donc plus petit en taille de données, et tout aussi natif. En plus côté PHP, tu fais :
$a = array('toto'=>'lol','tata'=>'mdr');
echo json_encode ($a);
Et coté javascript, tu te retrouveras avec un objet x :
x.toto // == lol
x.tata // == mdr