Bonjour à tous,
je rencontre une difficulté en Ajax.
J'ai un code qui consiste à lier des listes déroulantes (3 en tout).
Le code marche très bien sous Firefox mais pas sous IE6 (précision, je ne peux pas utiliser d'autre navigateur que IE6)
J'ai deux pistes :
- soit les paramètres ne sont pas envoyés lors du xhr.send (méthode POST)
- soit je récupère mal les parametres dans ma page php.
voici les codes de mes page:
envoi.php
ajaxLst.jsp
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 <select name='rub' id='rub' onchange='go(<?php echo $_SESSION['id'];?>)'> <option value='-1'>---Sélectionnez une rubrique---</option> <?php $sel_rub = "SELECT * FROM menu_intranet,peut_gerer WHERE menu_intranet.id_menu = peut_gerer.id_menu AND id_user = ".$_SESSION[id]." AND niveau = 1 ORDER BY lib_menu"; $result_rub = mysql_query($sel_rub); while($row_rub = mysql_fetch_assoc($result_rub)){ echo "<option value='".$row_rub["id_menu"]."'>".$row_rub["lib_menu"]."</option>"; } ?> </select> <br /><br /> <label>Sous-rubrique</label> <div id='ss_rub' style='display:inline'> <select name='ss_rub'> <option value='-1'>---Sélectionnez une sous-rubrique---</option> </select> </div> <br /><br /> <label>Sous-sous-rubrique</label> <div id='ss-ss-rub' style='display:inline'> <select name='ss-ss-rub'> <option value='-1'>---Sélectionnez une sous-sous-rubrique---</option> </select>
ss_rub.php (c'est dans cette page que je n'arrive pas à recupérer mes paramètres avec IE6)
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 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 de la 1ere liste deroulante */ function go(id_user){ 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){ leselect = xhr.responseText; alert(leselect); // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('ss_rub').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","ss_rub.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 sel = document.getElementById('rub'); id_rub = sel.options[sel.selectedIndex].value; data = "id_rub="+id_rub+"&id_user="+id_user; xhr.send(data); } /** * Méthode qui sera appelée sur le click de la 2eme liste deroulante */ function go2(id_user){ 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){ leselect = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('ss-ss-rub').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","ss_ss_rub.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 sel_ss = document.getElementById('ss-rub'); id_ss_rub = sel_ss.options[sel_ss.selectedIndex].value; xhr.send("id_ss_rub="+id_ss_rub+"&id_user="+id_user); }
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 <?php //On inclu le fichier de fonctions de connexion à la base include "../../fonctions/php/acces_bdd.php"; //Connexion à la base de donnees connecter("intranet"); echo "id_rub : ".$_POST['id_rub']." - id_user : ".$_POST['id_user']; /*echo "<select name='ss-rub' id='ss-rub' onchange='go2(".$_POST["id_rub"].")'>"; echo"<option value='-1'>---Sélectionnez une sous-rubrique---</option>"; if(isset($_POST["id_rub"])){ $res = mysql_query("SELECT * FROM menu_intranet,peut_gerer WHERE menu_intranet.id_menu = peut_gerer.id_menu AND id_user = ".$_POST["id_user"]." AND pere=".$_POST["id_rub"]." AND niveau = 2 ORDER BY lib_menu"); while($row = mysql_fetch_assoc($res)){ ?> <option value='<?php echo $row["id_menu"];?>' <?php if($row['id_menu'] == $ss_rub_sel){echo 'Selected';}?>><?php echo $row["lib_menu"];?></option> <?php } } echo "</select>";*/ deconnecter(); ?>
Partager