Bonjour,
J'ai actuellement un problème avec une fonction qui marche sur plusieurs pages et qui ne fonctionne pas sur une autre (que sous IE).
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
|
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... Utilisez une version plus récente.");
xhr = false;
}
return xhr;
}
function go(param){
var xhr = getXhr();
var sel = document.getElementById(param);
// 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
if (param == 'region_select'){
document.getElementById('div_centre').innerHTML = leselect;
}
else if(param == 'groupe_select'){
document.getElementById('div_centre').innerHTML = "";
document.getElementById('div_region').innerHTML = leselect;
}
}
}
// Ici on va voir comment faire du post
xhr.open("POST","ajaxRegion.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, le groupe
if (param == 'region_select'){
var postgroup = document.getElementById('groupe_select');
region = sel.options[sel.selectedIndex].value;
groupe = postgroup.options[postgroup.selectedIndex].value;
xhr.send("region="+region+"&postgroup="+groupe);
}
else if(param == 'groupe_select'){
groupe = sel.options[sel.selectedIndex].value;
xhr.send("groupe="+groupe);
}
} |
Lorsque je change la valeur de ma lisbox, IE m'affiche un message d'erreur : "Cet objet ne gère pas cette propriété ou cette méthode" en pointant cette ligne :
xhr.send("groupe="+groupe);
Je tiens à preciser que xhr.readyState n'atteint jamais 4.
Pour info la page html :
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
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Test</title>
<link href="style_sans_login.css" rel="stylesheet" type="text/css" />
<script language="Javascript" src="script.js"></script>
</head>
<body>
<div id="content">
<div id="main">
<div class="post">
<div>
<div style="float : left;">
<br/><br/><table class="table_no_brodure">
<tr>
<td class="table_no_brodure">Groupe : </td>
<td class="table_no_brodure">
<select name="groupe" id="groupe_select" onChange="go('groupe_select');">
<option value="">Aucun</option>
<option value="1">1</option><option value="2">2</option> </select>
</td>
</tr>
<tr>
<td class="table_no_brodure">Région :</td>
<td class="table_no_brodure">
<div id="div_region">
</div>
</td>
</tr>
<tr>
<td class="table_no_brodure">Centre : </td>
<td class="table_no_brodure">
<div id="div_centre">
</div>
</td>
</tr>
</table>
<br/><br/><br/><a href="ajout_modif.php">Retour</a><br/><br/>
<br/><br/><br/><br/>
</div>
</div>
</div>
</div>
</div>
<div id="footer"></div>
</body>
</html> |
Comme la fonction marche impeccablement sur d'autres pages, je ne pense pas que le problème vienne de là ...
Merci d'avance de m'éclairer.
Partager