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.
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 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; }
Etant débutant en Ajax je me dit que y'a surement un truc que j'ai loupé...
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); }
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. :/
Partager