Bloqué à readyState=3
orgreen
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
ArouG -
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);
}
}
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:
- Readystate 3
- Ai suite 3 - Télécharger - Optimisation
- Picasa 3 - Télécharger - Albums photo
- Photorecit 3 - Télécharger - Visionnage & Diaporama
- Zelda 3 - Accueil - Guide jeu vidéo
- +33 3 - Forum Mobile
1 réponse
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 ??
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 ??