Bloqué à readyState=3

orgreen Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
 ArouG -
Bonjour, je suis pas expert, ma fonction js marche sous firefox et pas sous IE. Sous IE readyState ne passe jamais à 4 (empêchant processResponse() de s'executer) et reste bloqué à la valeur readystate 3. Pourtant la réponse XML que je retourne via une servlet est toute simple puisqu elle comporte seulement une liste de clients avec en gros leur nom et prenom. Voilà si quelqu'un peut me donner ne serait-ce qu'une piste, un indice, une idée, je suis preneur.

function searchClient(inList,idlist){
var xmlHttpRequest=init();
function init() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {

return new ActiveXObject("Microsoft.XMLHTTP");
}
}

var lastname=document.getElementById("lastname");
var firstname=document.getElementById("firstname");
var address=document.getElementById("address");
var zip=document.getElementById("zip");
xmlHttpRequest.onreadystatechange=processRequest;
xmlHttpRequest.open("GET", "/servlet/ajSearchClient"+inList+"?lastname="+ encodeURIComponent(lastname.value)+"&firstname="+encodeURIComponent(firstname.value)+"&address="+encodeURIComponent(address.value)+"&zip="+encodeURIComponent(zip.value)+"&idlist="+idlist, true);
xmlHttpRequest.send(null);

function processRequest() {
if (xmlHttpRequest.readyState!=4) {
Effect.Appear("ajaxian",{delay:0, duration:2});
}
if (xmlHttpRequest.readyState==4) {
if (xmlHttpRequest.status==200) {
processResponse();
}
}
}

function processResponse() {
var i=0;
var colorrow="";
var xmlMessage=xmlHttpRequest.responseXML;
var listeMessage = document.getElementById("tabresult").tBodies[0];
listeMessage.innerHTML="";
if (xmlMessage.getElementsByTagName("result")[0] == "vide") {
listeMessage.innerHTML="";
}
else {
var item=0;
while (xmlMessage.getElementsByTagName("firstname")[item]) {
if (item % 2 == 0) {
// classrow = "textfield0";
colorrow = "#C3D9FF";}
else {
// classrow = "textfield1";
colorrow = "#E8EEF7";
}
var idda=xmlMessage.getElementsByTagName("idda")[item].firstChild.nodeValue;
listeMessage.innerHTML=listeMessage.innerHTML+"<TR bgcolor='"+colorrow+"'><TD>"+xmlMessage.getElementsByTagName("firstname")[item].firstChild.nodeValue+"</TD><TD>"+xmlMessage.getElementsByTagName("lastname")[item].firstChild.nodeValue+"</TD><TD> "+xmlMessage.getElementsByTagName("address")[item].firstChild.nodeValue+"</TD><TD>"+xmlMessage.getElementsByTagName("zip")[item].firstChild.nodeValue+"</TD><TD> doc/add: "+xmlMessage.getElementsByTagName("id_doc")[item].firstChild.nodeValue+"</TD><TD> idda: "+idda+"</TD><TD><A HREF=ClientDetailServlet?idda="+idda+">more</A>"+"</TD></TR>";
item++;
}
}
setTimeout('Effect.Fade(\'ajaxian\')',1000);
}
}
A voir également:

1 réponse

ArouG
 
Bonjour, dans ta définition de la variable idda, je distingue une petite coquille :

var idda=xmlMessage.getElementsByTagName("idda")[item].firstChild.nodeValue;
listeMessage.innerHTML=listeMessage.innerHTML+"<TR bgcolor='"+colorrow+"'><TD>"+xmlMessage.getElementsByTagName(" ;firstname")[item].firstChild.nodeValue+"</TD><TD>"+xmlMessage. getElementsByTagName("lastname")[item].firstChild.nodeValue+"</TD>< ;TD> "+xmlMessage.getElementsByTagName("address")[item].firstChild.nodeValue+&qu ot;</TD><TD>"+xmlMessage.getElementsByTagName("zip")[item].firs tChild.nodeValue+"</TD><TD> doc/add: "+xmlMessage.getElementsByTagName("id_doc")[item].firstChild.nodeValue+&quo t;</TD><TD> idda: "+idda+"</TD><TD><A HREF=ClientDetailServlet?idda="+idda+">more</A>"+"</TD> </TR>";
item++;

Il y a un ".firstChild.nodeValue" avec un espace entre "firs" et "tChild..."

Normal ou pas ??
0