Bonjour,
J'ai décidé d'apprendre à programmer en javascript orienté vers l'ajax. Je suis sur ma première application et j'ai un gros soucis car si ca marche sous Firefox, Safari, Opera..., j'ai des beugs sous IE (pour ceux que ca étonne encore ).
Je vous mets mon code, n'hésitez pas à critiquer ce qui ne va pas si ma manière de programmer n'est pas correcte car je me lance dans le tas. Je mets pas le php qui génère le XML car c'est exécuté côté serveur donc indépendant du navigateur donc de mon problème (du moins je pense).
Le but de ce bout d'application est de filtrer via un input (onKeyUp="UpdateContactList(this.value)") une liste, donc je supprime celle qui existe et génère la nouvelle.
Mon bug est assez étrange, sous IE, si je tape "a" dans mon input rien ne se passe (enfin ca supprime mais ne génère rien), de même que " ", mais "j" me renvoie le bon résultat...
Merci d'avance pour votre aide car je suis vraiment perdu.
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 function UpdateContactList(filter){ var xhr=null; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } // FIREFOX else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } // IE // Appel de la fonction au retour serveur xhr.onreadystatechange = function() { ListContact(xhr); }; // Suppression des contacts var Node = document.getElementById("List"); while (Node.childNodes.length>0) { Node.removeChild(Node.firstChild); } // Appel du fichier reponse xhr.open("GET", "UpdateContactList.php?filter="+escape(filter), true); xhr.send(null); } function ListContact(xhr) { if (xhr.readyState==4) { var docXML= xhr.responseXML; var name = docXML.getElementsByTagName("name"); var surname = docXML.getElementsByTagName("surname"); var number = docXML.getElementsByTagName("number"); var ul = document.getElementById("List"); for (i=0;i<name.length+1;i++) { var li = document.createElement("li"); if(i<name.length) {li.innerHTML = name.item(i).firstChild.data + " " + surname.item(i).firstChild.data;} // Une fois les x résultats affichés, on rajoute une ligne avec le nombre x de résultats else {li.innerHTML = number.item(0).firstChild.data; } ul.appendChild(li); } } }
Partager