Bonjour à tous,
J'ai un petit soucis avec AJAX en ce moment. J'ai réalisé grâce à un tuto que j'ai trouvé sur ce site, un script qui permet de trouver la liste des provinces d'Italie depuis une liste des régions. J'ai donc lié mes 2 listes déroulantes qui représentent ces données. Cela fonctionne sous Firefox mais malheureusement pas sous Internet Explorer ... à mon grand désespoir.
Voici les 2 morceaux de codes :
Sur la page html :
Et le code javascript :
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 <div class="ligne"> <label>Regione di residenzia : </label> <select name="listeRegions" class="listeDeroulante" id="regions" onChange="getPronvinces()"> <option selected>Séléctionnez une région</option> <?php //On appelle toutes les régions $sql = mysql_query("SELECT * FROM `region`"); while($donnees = mysql_fetch_array($sql)){ echo '<option id="'.$donnees['id_region'].'">'.$donnees['nom_region'].'</option> '; } ?> </select> </div> <div class="ligne"> <p><em>Séléctionnez d'abord une région <strong>puis une province</strong></em></p> </div> <div class="ligne"> <label>Provencia di residenzia : </label> <select name="listeProvinces" class="listeDeroulante" id="provinces"> <option selected>Séléctionnez d'abord une région</option> <!--Insertion des données AJAX concernant les provinces--> </select> </div>
Même si je ne pense pas que celui ci intervienne dans mon bug, je vous met le code PHP utilisé pour faire la requête :
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 // JavaScript Document 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; } /** * Méthode qui sera appelée sur le click du bouton */ function getPronvinces(){ var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse 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){ listeProvinces = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('provinces').innerHTML = listeProvinces; } } // Ici on va voir comment faire du post xhr.open("POST","listage_provinces.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 // ici, l'id de l'auteur sel = document.getElementById('regions'); idregion = sel.options[sel.selectedIndex].id; xhr.send("idRegion="+idregion); }
Merci de votre aide ô combien précieuse
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 <?php /*echo "idRegion : ".$_POST["idRegion"];*/ if(isset($_POST["idRegion"])){ mysql_connect("localhost","root",""); mysql_select_db("candidatures"); $res = mysql_query("SELECT id_province ,nom_province FROM province WHERE id_region_province = ".$_POST["idRegion"]." ORDER BY nom_province"); if(mysql_fetch_assoc($res)>0){ while($row = mysql_fetch_assoc($res)){ echo " <option value='".$row["id_province"]."'>".utf8_encode($row["nom_province"])."</option> "; } } else { echo "<option value='-1'>Pas de provinces</option>"; } } ?>
Partager