Bonjour,

J'ai un code qui fonctionne bien sous FF mais pas sous IE9.
Il s'agit d'une liste liée. L'utilisateur choisit un serveur, et en fonction du choix qu'il fait, il à le choix entre des noms d'instance coïncidants avec le serveur choisis.

La fonction qui gère la liste liée est : list_liee_serveur_instance()

Apres pas mal de recherche dans mon code grâce à firebug, j'ai pu constater que mon problème vient du fait que xhr responsetext est à null sous IE alors qu'il est bien renseigné sous FF.
Quand je regarde sous IE9 grâce à firbug lite, dans l'onglet "console" je peux voir le POST. Dans les infos du post je peux voir le paramètre que j'envoie : choixServeur = 2 mais dans l'onglet "Response", j'ai null.

On dirai donc que sous IE, mon post ne reçoit aucune réponse.

Si vous avez une idée pour me débloquer, merci à vous

Voici mes codes:
Le fichier "combobox.php" qui affiche les listes liées (qui sont dans des TD):
Code php : 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
<td>
	Serveur: <br/>
<?php
$list_deroul_instance = "<select name='id_serveur' id='id_serveur' onchange='list_liee_serveur_instance()'>";
$list_deroul_instance .= "<option value='-1'>---</option>";
foreach($list_serveur as $serv){
	$list_deroul_instance .= "<option value='".$serv['s_id']."' ";
	if(isset($_POST['id_serveur']) && $_POST['id_serveur'] == $serv['s_id']) $list_deroul_instance .= "selected='selected' ";
	$list_deroul_instance .= ">".$serv['s_serveur']."</option>";
}
$list_deroul_instance .= "</select>";
echo $list_deroul_instance;					
?>
</td>
<td>
	Instance : <br/>
	<div id='precision_instance' name='precision_instance' style='display:inline'>
<?php							
echo "<select name='select_precision_instance'>";
if(isset($_POST["id_serveur"])){
	$res = recup_list("for_web_instance", "i_id, i_nom_instance", "i_fk_serveur_id = '".$_POST["id_serveur"]."' ORDER BY i_nom_instance");
	echo "<option value='all'>Toutes les instances</option>";
	foreach($res as $cle => $value)	{
		$option = "<option value='".$value["i_id"]."' ";								
		if(isset($_POST['select_precision_instance']) && $_POST['select_precision_instance'] == $value["i_id"]) $option .= "selected='selected' ";
		$option .= ">".$value["i_nom_instance"]."</option>";
		echo $option;									
	}																		
}else{
	echo "<option value='-1'>Choisir le serveur</option>";
}
echo "</select>";							
?>		
	</div>	
</td>

Mon code JS :
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
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;
}function list_liee_serveur_instance(){
	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){
			alert("responseXML:" + xhr.responseXML);
			alert("responseText:" + xhr.responseText);
			leselect = xhr.responseText;
			// On se sert de innerHTML pour rajouter les options a la liste
			document.getElementById('precision_instance').innerHTML = leselect;
		}
	}
	// Ici on va voir comment faire du post
	xhr.open("POST","controleur/ajaxCombo_box.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 choix sur lequel portera le rapport
	sel = document.getElementById("id_serveur");
	choix_serveur = sel.options[sel.selectedIndex].value;
	xhr.send("choixServeur="+choix_serveur);
	if(choix_serveur == -1){
		$('#combo_envoyer').attr('disabled', true); 
	}else{
		$('#combo_envoyer').attr('disabled', false); 
	}
}
Le fichier qui est appelé dans le post.
Pour simplifier le test, j'ai commenté la partie avec la requette pour ne faire afficher qu'un "YOOOOO". ça fonctionne bien sous FF mais pas sous IE avec le "YOOOOOO":
Code php : 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
<?php
include '../global/config.php';
include '../global/fonction.php';
include '../modele/global.php';
include '../lib/pdo2.php';	
 
	echo "<span name='ajax_precision_instance'>";
	echo "YOOOO";
	/*
	echo "<select name='select_precision_instance'>";
	if(isset($_POST["choixServeur"])){
		if($_POST["choixServeur"] == '-1'){
			echo "<option value='rien'>Choisir le serveur</option>";
		}else{
			$res = recup_list("for_web_instance", "i_id, i_nom_instance", "i_fk_serveur_id = '".$_POST["choixServeur"]."' ORDER BY i_nom_instance");
			echo "<option value='all'>Toutes les instances</option>";
			foreach($res as $cle => $value)	{
				$option = "<option value='".$value["i_id"]."' ";								
				if(isset($_POST['select_precision_instance']) && $_POST['select_precision_instance'] == $value["i_id"]) $option .= "selected='selected' ";	
				$option .= ">".$value["i_nom_instance"]."</option>";
				echo $option;								
			}					
		}		
	}
	echo "</select>";
	*/
	echo "</span>";
?>

Merci