Bonjour,
j'ai créé une fonction Ajax entre plusieurs listes déroulantes et celle ci marche sous firefox, opéra.
Sous IE, elle marche également mais à un certain moment d'utilisation, la liste devient vide.. Et uniquement sur certains ordinateurs.
Voici mon code tout d'abord :
function chargeAjax(categorie)
{
if (document.getElementById("yahoo_menu").value != "")
{
if(window.XMLHttpRequest) // Firefox
{
xhr_object = new XMLHttpRequest();
}
else
{
if(window.ActiveXObject) // Internet Explorer
{
try
{
xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{ // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
}
xhr_object.open("GET", "getCateg2.asp?idcateg="+categorie, true);
xhr_object.onreadystatechange = function() {recevoir_liste_categ2(xhr_object);};
xhr_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr_object.send(null);
//On change la première liste donc les autres doivent être remises à zero.
document.getElementById("yahoo2").length=0
document.getElementById("yahoo3").length=0
document.getElementById("yahoo4").length=0
}
else
{
document.getElementById("yahoo2").length=0
document.getElementById("yahoo3").length=0
document.getElementById("yahoo4").length=0
}
}
function recevoir_liste_categ2(xhr_object)
{
// Sur le retour de la requete, on teste son état
if ( xhr_object.readyState == 4 )
{
if (xhr_object.status == 200)
{
response = xhr_object.responseText
categories=response.split('/');
var selectcateg2=document.getElementById("yahoo2");
selectcateg2.length=0;
selectcateg2.length=categories.length;
selectcateg2.options[0].value="";
selectcateg2.options[0].text="Veuillez choisir...";
for(i=1;i<categories.length;i++)
{
cat=categories[i-1].split('*');
selectcateg2.options[i].value=cat[0];
selectcateg2.options[i].text=cat[1];
}
}
}
}
Maintenant je vais vous décrire ce que cela me donne. Donc au départ ça marche (3/4/5 fois) et à un moment, la 2ème liste devient vide.
J'ai affiché cat[0] (l'id) et cat[1] (le libellé), ils retournent bien une valeur et on voit qu'ils remplissent la 2nd liste puis à la fin de boucle, la liste se vide... Il n'y a aucune autre fonction de lancée ni dans le javascript, ni dans l'html.
De plus, j'ai 5 valeurs dans ma première liste. Souvent le bug commence à la première valeur mais les autres fonctionnent. Puis, petit à petit, une, puis une autre valeur ne fonctionnent plus non plus.
J'ai pensé à un problème de cache mais ça ne peut pas être ça puisque cat[0] et cat[1] renvoient bien des valeurs et remplissent la 2eme liste. Je cherche ce qui pourrait venir vider la liste déroulante après qu'elle ait été remplie.
A savoir que cela bug sous IE6 et IE7.
Si quelqu'un a une idée ou a déjà rencontré ce problème je vous remercie d'avance pour votre aide car la vraiment, je nage (coule).