Bonjour,
J'essai de remplir une liste déroulante à partir d'une autre en utilisant Ajax,
Firebug me donne une erreur au niveau de ma fonction Ajax.
code javascript:
Code html:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 // code javasscript pour lévenement onchange dans la liste déroulante de départ // traitement Ajax function change(){ function getXhr(){ 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; } var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function() { var rst = xhr.responseXML; var items = rst.getElementsByTagName('element'); document.getElementById('ajax_list').options.length= 0; for (var i=0; i<items.lenght;i++){ var myOption = new Option(items[i].getElementsByTagName('option')[0].firstChild.nodeValue,items[i].getElementsByTagName('valeur')[0].firstChild.nodeValue,false,true); document.getElementById('ajax_list').options[i]= myOption; } } // Ici on va voir comment faire du post xhr.open("POST","traitement_ajax.php",true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments zonage = document.getElementById('zonage_administratif'); zonage_value = zonage.options[zonage.selectedIndex].value; xhr.send("zonage_value="+zonage_value); } </script>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <!-------------La liste de départ -------------> <select id ="zonage_administratif" name ="liste" style="width: 16em" onchange="change()"> <option id="Commune" value = "com_nom">commune</option> <option id="EPCI" value = "epci_nom">EPCI</option> <option id="PAYS" value = "pays_nom">Pays</option> <option id="PNR" value = "pnr_nom">PNR</option> </select> </div></br> <!--Liste à remplir---> <div id="Ajax_list"> <label id ="label1"></label> <select id="ajax_list" name="ajax_list" style="width: 16em" > <option></option> </select>
Code php: traitement_ajax.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 <?php require_once('config.php'); header("Content-type:text/xml"); // si zonage_value est celui de pnr if(isset($_POST["zonage_value"]) && $_POST['zonage_value']== "pnr_nom") { // recherche de pnr par pnr_nom $sql = "SELECT pnr_nom,gez_id_geom_zonage FROM $TablePNR_nom order by pnr_nom"; // on envoie la requête $req = pg_query($db,$sql)or die ('Requete invalide:'.pg_last_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data = pg_fetch_assoc($req) ) { //echo "<option value=".$data['gez_id_geom_zonage'].">".$data['pnr_nom']."</option>"; echo '<element>'; echo "<option>".$data['pnr_nom']."</option>"; echo '<valeur>'.$data['gez_id_geom_zonage'].'</valeur>'; echo '</element>'; } } // si zonage_value est celui de commune elseif($_POST['zonage_value']== "com_nom") { // recherche de la commune par code_insee $sql = "SELECT com_nom,com_insee FROM $TableCommunes_nom order by com_nom"; // on envoie la requête $req = pg_query($db,$sql)or die ('Requete invalide:'.pg_last_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data = pg_fetch_assoc($req) ) { // on récupère le code de la commune choisie et on affiche le nom echo '<element>'; echo "<option value=".$data['com_insee'].">".$data['com_nom']." (".$data['com_insee'].")</option>"; echo '</element>'; } } // si zonage_value est celui de pays elseif($_POST['zonage_value']== "pays_nom") { $sql = "SELECT pays_nom,gez_id_geom_zonage FROM $TablePays_nom order by pays_nom"; // on envoie la requête $req = pg_query($db,$sql)or die ('Requete invalide:'.pg_last_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data = pg_fetch_assoc($req) ) { // on récupère le code de la commune choisie et on affiche le nom echo '<element>'; echo "<option value=".$data['gez_id_geom_zonage'].">".$data['pays_nom']."</option>"; echo '</element>'; } } // si zonage_value est celui de EPCI elseif($_POST['zonage_value']== "epci_nom") { $sql = "SELECT epci_nom,gez_id_geom_zonage FROM $TableEPCI_nom order by epci_nom"; // on envoie la requête $req = pg_query($db,$sql)or die ('Requete invalide:'.pg_last_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data = pg_fetch_assoc($req) ) { // on récupère le code de la commune choisie et on affiche le nom echo '<element>'; echo "<option value=".$data['gez_id_geom_zonage'].">".$data['epci_nom']."</option>"; echo '</element>'; } } ?>
L'erreur affichée par firebug : est rst is null
var rst = xhr.responseXML;
Je récupère les résultats sous forme XML mais je récupère rien dans ma liste !
Partager