[AJAX] Listes liées qui ne fonctionnent pas sous IE 8
Bonjour à tous,
J'ai suivit cette discussion sauf que mon problème n'est pas résolu.
En fait comme le titre l'indique, j'ai une liste déroulante qui est liée via deux fonctions (Ajax/JavaScript) à un input et une autre liste.
Étonnement il n'y a que la seconde liste qui ne fonctionne pas. Alors que l'input, lui, fonctionne bien.
Mon code Javascript est le suivant :
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
| //Cette fonction est appelée via "<script type="text/javascript" src="../JavaScript/javascript.js"></script>"
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;
}
//les fonctions suivantes sont directement sur la feuille PHP
function serv() //Ceci est la fonction qui fonctionne très bien (input)
{
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('service').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","../Ajax/ajaxService.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, l'id de la TMA
sel = document.getElementById('tma');
idtma = sel.options[sel.selectedIndex].value;
xhr.send("idtma="+idtma);
}
function sa() //Ceci est la fonction qui ne marche pas (liste déroulante)
{
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('sous_appli').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","../Ajax/ajaxApplication.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, l'id de la TMA
sel = document.getElementById('tma');
idtma = sel.options[sel.selectedIndex].value;
xhr.send("idtma="+idtma);
} |
Voila maintenant mon code PHP de la première liste déroulante
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| echo"<tr>
<td valign='top'>
<label>Nom de la TMA*</label>
</td>
<td><div onClick = 'sa();serv();' >
<select name = 'tma'
id = 'tma'
style = 'width:313px;float:left;'
REQUIRED>
<option value=''> </option>";
//Récupère la liste des tma
$liste_tma = mysql_query("SELECT * FROM tma")or die ('Erreur SQL !<br>'.$res.'<br>'.mysql_error());
while($row = mysql_fetch_assoc($liste_tma))
{
echo "<option value='".$row["id_tma"]."'>".$row["libelle_tma"]." </option>";
}
echo" </select> </div>
</td>
</tr>"; |
Voila merci d'avance de votre aide