Bonjour,
J'ai un p'tit problème avec un formulaire Ajax...
J'ai une liste déroulante, qui sur onchange va appeler 2 fonctions :
OnChange = fontion1();fonction2();
La fonction 1 met a jour 1 div
La fonction 2 met a jour le 2ème div
Si je mets un alert de l'id de la fonction 1, ça fonctionne, et si je commente l'alert, ca ne fonctionne plus (seul la 2ème fonction s'execute!!!)
Donc je me demande si je ne dois pas mettre une tempo quelque part ?!? et je ne sais pas comment faire...
Enfin bref, en deux mots : AU SECOURS !!!
Je vous mets le code si vous pouvez m'aider
Les fonctions :
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 function SelectLt() { getXhr(); // On appele la fonction getXhr // Traitement de la réponse au POST envoyé plus bas xhr.onreadystatechange = function () // On défini ce qu'on va faire quand on aura une réponse { if(xhr.readyState == 4 && xhr.status == 200) // si on a tout reçu et que le serveur est ok { leselect = xhr.responseText; // On indique que leselect est égal à la réponse xhr document.getElementById('lt').innerHTML = leselect; // On se sert de innerHTML pour rajouter les options a la liste lt } } // Envois des données par post xhr.open("POST","AjaxCreaRgLt.php",true); // On ouvre xhr, on lui indique la méthode POST ainsi que le fichier de destination xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier ça pour le post //On poste les arguments sel = document.getElementById('site'); // ici, l'id du site idsite = sel.options[sel.selectedIndex].value; // idsite sera égal à la valeur de l'option sélectionnée xhr.send("idsite="+idsite); // On envois la variable idsite qui aura la valeur de idsite } function SelectAuto() { getXhr(); // On appele la fonction getXhr // Traitement de la réponse au POST envoyé plus bas xhr.onreadystatechange = function () // On défini ce qu'on va faire quand on aura une réponse { if(xhr.readyState == 4 && xhr.status == 200) // si on a tout reçu et que le serveur est ok { leselect = xhr.responseText; // On indique que leselect est égal à la réponse xhr document.getElementById('autocom').innerHTML = leselect; // On se sert de innerHTML pour rajouter les options à la liste autocom } } // Envois des données par post xhr.open("POST","AjaxCreaRgAuto.php",true); // On ouvre xhr, on lui indique la méthode POST ainsi que le fichier de destination xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier ça pour le post //On poste les arguments sel = document.getElementById('site'); // ici, l'id du local idsite = sel.options[sel.selectedIndex].value; // idlocal sera égal à la valeur de l'option sélectionnée xhr.send("idsite="+idsite); // On envois la variable idlocal qui aura la valeur de idlocal //alert (idsite); // <-- Si c'est décommenté, ça fonctionne !!! }
Les div :
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 <tr><label><td>Site : </td><td> <select name='site' id='site' onchange='SelectAuto();SelectLt();'> <option value=""></option> <?php $reponse = mysql_query("SELECT sigle FROM site ORDER BY sigle") or die(mysql_error()); while($donnees = mysql_fetch_assoc($reponse)) { if ($donnees["sigle"] != $test) { echo "<option value='".$donnees["sigle"]."'>".$donnees["sigle"]."</option>"; $test= $donnees["sigle"]; } } ?> </select> </td> </label> </tr> <tr><label><td>Autocom: </td><td> <div id='autocom' style='display:inline' > <select> <option value='-1'>Autocom</option> </select> </div> </td> </tr> <tr><label><td>Local technique: </td><td> <div id='lt' style='display:inline' > <select> <option value='-1'>Local</option> </select> </div> </td> </tr>
Merci beaucoup pour votre aide et bonne journée à vous
Mind







Répondre avec citation
Partager