[AJAX] utilisation de xmlhttprequest
Bonjour à tous,
voilà je vous expose mon problème:
j'ai une page php sur laquelle j'ai 2 listes déroulantes liées à une base de données.
Et lorsque je sélectionne dans ma 1ère, je voudrais que ma seconde se rafraichisse (ie modifier la requête qui rempli cette liste déroulante).
J'ai donc mis un évènement onchange sur ma 1ère liste qui lance une fonction javascript afin de me renvoyer sa valeur (selected) pour que je puis modifier la requête sur la seconde liste.
en parcourant les forum, j'ai vu qu'on pouvait utiliser xmlhttprequest et sa propriété send pour récupérer une valeur en php, mais malheureusement, c là que je bloque, je ne reçoit rien :(.
voici ma fonction javascript:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| function test(param){
var xhr_object = null;
var data = null;
//initialisation de l'objet XMLHttpRequest
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("POST", "index.php?c=maintenances&ac=ajouter", true);
//pour la methode POST
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
data = "vincent";
xhr_object.send(data);
} |
et dans mon php, je fais (j'ai sorti de mon form le test pour recevoir la valeur javascript au cas où):
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
| <form class="form_detail" method="post" action="index.php?c='.$this->className.'&ac=ajouter">
<fieldset>
<legend>Informations</legend>
<dl>
<dt><label for="intitule">Intitulé</label><sup>*</sup> :</dt>
<dd><input type="text" class="txtLbl oblig" name="maintenances[lbl]" id="lbl" value="'.$maintenances['lbl'].'" /></dd>
<dt><label for="t_eqpts_id">Type d´équipement</label> :</dt>
<dd><select name="maintenances[t_eqpts_id]" onchange="test(this.value);">';
$listeT_Eqpts = $this->tableT_Eqpts->listeTout("lbl", null,0);
echo '<option value=null>< non renseigné ></option>';
foreach ($listeT_Eqpts as $t_eqpts){
echo '<option ';
if($maintenances['t_eqpts_id'] == $t_eqpts['id']){echo 'selected ';};
echo ' value="'.$t_eqpts['id'].'">'.$t_eqpts['lbl'].'</option>';
}
echo '</select></dd>';
echo '<dt><label for="etats_id">Etat</label><sup>*</sup> :</dt>
<dd><select name="maintenances[etats_id]" class="oblig">';
$listeEtats = $this->tableEtats->listeTout("lbl", null,0);
foreach ($listeEtats as $etats){
echo '<option ';
if($maintenances['etats_id'] == $etats['id']){echo 'selected ';};
echo ' value="'.$etats['id'].'">'.$etats['lbl'].'</option>';
}
echo '</select></dd>
</dl>
</fieldset>
<input type="hidden" name="maintenances[desactive]" value="0"/>
<button type="submit" name="ajouter"><img src="images/fichier_ajouter.png" alt=""/>Ajouter</button>
</form>
if(isset($_POST['cmd'])){
echo $_POST['cmd'];
}
else
echo 'erreur'; |
je me demande si mon code est correct car ça m'écrit toujours "erreur" au lieu de mon $_POST?
(j'ai un petit doute sur le fait que je sois déjà sur la page que j'utilise dans mon xhr_object.open ne fausse pas mon code ??)
voilà, si quelqu'un à un avis à m'apporter, je suis preneur ;)
(désolé s'il y a trop de blabla, mais une fois parti ... :))