Ajax bug IE

Fermé
3645s - 11 mars 2008 à 11:21
 3645s - 11 mars 2008 à 15:55
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).

1 réponse

Problème règlé.. Finalement c'était un problème de cache...

J'ai mis :

response.AddHeader "Pragma", "no-cache"
response.AddHeader "cache-control", "no-store"

Dans ma page principale et dans les pages des requêtes...

Maintenant je n'ai plus qu'à trouver comment mettre le sujet en résolu..
0