Bonjour a tous,

Je bute actuellement sur un soucis de javascript a cause de ce satané ie6.
Mon script ajax fonctionne sous: Firefox (et Netscape), IE7, Opera, Safari et consort, mais ie6 fais (une fois de plus?) son relou.
Les objets activeX sont pourtant bien activés en particulier xmlhttprequest qui nous interesse, ainsi que le javascript.

Voici ma fonction init qui me retourne mon objet.
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
 
function init() {
	var xhr = null; // L'objet qui contiendra le XMLHttpRequest
 
	if(window.XMLHttpRequest) { // Firefox et autres
		xhr = new XMLHttpRequest();
	} else if(window.ActiveXObject) { // Internet Explorer 
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (Msxml2E) {
			try {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (MicrosoftE) {
				xhr = null;
			}
        }
	}
 
	if(xhr === null) { // XMLHttpRequest non supporté par le navigateur 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	   xhr = false; 
	}
 
	return xhr;
}
voici une des fonctions qui ne passent pas
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 updateMinistereList() {
	alert('init');
	var xhr = init(); // Récupère le XMLHttpRequest
	var i;
	var keys;
	var valeurs;
 
	document.getElementById("loader").className="voir";
 
	xhr.open("POST", "ajax/updateListeMinistere.php", true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	sel = document.getElementById('type');
	type = sel.options[sel.selectedIndex].value;
 
	xhr.onreadystatechange = function() { 
		if(xhr.readyState == 4 && xhr.status == 200) {
			document.getElementById("loader").className="cacher";
			valeurs = document.getElementById('cabinet');
			while(valeurs.length != 1) {
				document.getElementById('cabinet').options[valeurs.length-1] = null;
			}
 
			keys = xhr.responseXML.getElementsByTagName("key");
			valeurs = xhr.responseXML.getElementsByTagName("value");	
 
			if (valeurs.length != 0) {
				//on fait juste une boucle sur chaque élément "value" trouvé
				for (i = 0; i < valeurs.length; i++) {
					// On ajoute un élément a la liste
					document.getElementById('cabinet').options[i+1] = new Option(valeurs.item(i).firstChild.data, keys.item(i).firstChild.data, false, false);
				}
			} else {
				//TODO
			}
			//updateFormatList(); // cette méthode me servira a actualiser une autre liste lorsque celle-ci fonctionnera
		} else {
			//TODO
		}
	}
 
	// On envoie ses données
	xhr.send("type="+type);
}
Etant débutant en Ajax je me dit que y'a surement un truc que j'ai loupé...
La méthode updateministere est appélé sur un onchange, et sur ie6 il ne me fait même pas la première alerte. En fait même avant l'appel grace au onchange j'ai une erreur javascript (un ; qui manque quelques part, mais je ne le vois point xD). Avec firebug sous firefox je n'ai pourtant aucune erreur même lors du post en ajax.
Si j'enleve le onreadystatechange et le send ie6 ne me met plus d'erreur et parcours bien ma methode updatelisteministere (en entier), mai bon cela ne me donne pas grand chose. :/