[AJAX] 2 listes déroulantes liées
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 :
Code:
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> |
Et le code javascript :
Code:
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);
} |
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:
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>";
}
}
?> |
Merci de votre aide ô combien précieuse :)