[AJAX] Liste déroulante qui ne s'actualise pas avec XMLHttpRequest
Salut,
J'ai suivi les indications que j'ai trouvé dans la FAQ sur le sujet, mais je ne vois pas pourquoi ma liste déroulante ne s'actualise pas :question:
Voici le code que j'ai fait :
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 47 48 49 50 51 52 53 54 55 56 57 58
| ...
<script type='text/javascript'>
var xhr = null;
function getXhr(){
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;}}
/**
* Méthode qui sera appelée sur le click du bouton
*/
function cotation1(){
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){
di = document.getElementById('val_id_cot3');
di.innerHTML = xhr.responseText;}}
// Ici on va voir comment faire du post
xhr.open("POST","cotation1.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
donnee_id_analyse = document.getElementById('val_id_analyse').options[document.getElementById('val_id_analyse').selectedIndex].value;
//alert(idauteur);
xhr.send(donnee_id_analyse);}
</script>
...
<form>
<select name="val_id_analyse" class="TITRE_20" id="val_id_analyse" onchange="cotation1()">
<option class="TITRE_20">Aucun</option>
<?php
$sql = "SELECT ergoprod_poste_cotation.id_analyse, ergoprod_cotation1.libelle, ergoprod_cotation2.nature, ergoprod_cotation3.niveau
FROM (ergoprod_cotation1 INNER JOIN ergoprod_cotation2 ON ergoprod_cotation1.id_cot1 = ergoprod_cotation2.id_cot1) INNER JOIN (ergoprod_poste_cotation INNER JOIN ergoprod_cotation3 ON ergoprod_poste_cotation.id_cot3 = ergoprod_cotation3.id_cot3) ON ergoprod_cotation2.id_cot2 = ergoprod_cotation3.id_cot2
WHERE (ergoprod_poste_cotation.id_poste=$val_id_poste)";
$result=mysql_query($sql);
while ($row=mysql_fetch_object($result)) {
echo "<option value=\"$row->id_analyse\">$row->libelle = $row->niveau</option>\n";}
?>
</select>
<br> <br>
<div id="val_id_cot3" style="display:inline">
<select class="TITRE_20" name="val_id_cot3">
<option value="-1">Choisir le niveau à modifier</option>
</select>
</div>
</form> |
Et le fichier cotation1.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?php
require "../../../connect.php";
?>
<head>
<link rel="stylesheet" type="text/css" href="../../Style.css">
<link rel="stylesheet" type="text/css" href="../../Style_page.css">
<select name="val_id_cot3" class="TITRE_20">
<option class="TITRE_20">Liste des choix</option>
<?php
$sql_cotation1 = "SELECT ergoprod_cotation3.id_cot3, ergoprod_cotation3.niveau
FROM ergoprod_poste_cotation LEFT JOIN ergoprod_cotation3 ON ergoprod_poste_cotation.id_cot2 = ergoprod_cotation3.id_cot2
WHERE (ergoprod_poste_cotation.id_analyse=".$_REQUEST["donnee_id_analyse"].")
ORDER BY ergoprod_cotation3.evaluation";
echo $sql_cotation1;
$result_cotation1=mysql_query($sql_cotation1);
while ($row_cotation1=mysql_fetch_object($result_cotation1)) {
echo "<option value=\"$row_cotation1->id_cot3\">$row_cotation1->niveau</option>\n";}
?>
</select> |
Le problème doit venir de $_REQUEST["donnee_id_analyse"], car si je mets 1 ou une autre valeur, cela fonctionne...
Merci.