Ajax bug IE
3645s
-
3645s -
3645s -
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).
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).
A voir également:
- Ajax bug IE
- Bug chromecast - Guide
- Ie tab - Télécharger - Outils pour navigateurs
- Bug family link - Forum Contrôle parental
- Bill ie cork ✓ - Forum Consommation & Internet
- Iptv bug ✓ - Forum TV & Vidéo