Mise à jour d'information sous IE
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 :roll:).
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...
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
| 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);
}
}
} |
Merci d'avance pour votre aide car je suis vraiment perdu.