[AJAX] IE6:impossible de recuperer les parametres envoyés par xhr.send (POST)
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
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
|
<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> |
ajaxLst.jsp
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 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);
} |
ss_rub.php (c'est dans cette page que je n'arrive pas à recupérer mes paramètres avec IE6)
Code:
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();
?> |