Problème d'utilisation de l'appel AJAX dans IE6 et IE7 – Je pose la même question à nouveau, car je n'ai eu aucune solution avant

J'ai ce code, qui fonctionne bien dans FireFox, chrome et IE8 mais ne fonctionne pas sur IE6 et IE7.

function GetXmlHttpObject() { //var xmlHttp = null; try { xmlHttp = new XMLHttpRequest(); } catch (e) { try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; } function login() { alert("Entered Login()"); var url="http://server.com/ALUauth.php"; xmlhttp.onreadystatechange=statechangedLogin; xmlhttp.open("GET", url, true); xmlhttp.send(null); } function statechangedLogin() { if(xmlhttp.readyState==4) { alert("Entered State Changed Login"); if (xmlhttp.responseText=="Please <a href=http://server.com/ALUauth.php?login>login</a>") { document.getElementById("ALUauth").innerHTML=xmlhttp.responseText; } else { GetEmailId(); } } } function GetEmailId() { alert("Entered GetEmailId()"); var url="http://server.com/GetPostEmail.php"; url=url+"&sid="+Math.random(); xmlhttp.onreadystatechange=statechangedLogin2; xmlhttp.open("GET", url, true); xmlhttp.send(null); } function statechangedLogin2() { if(xmlhttp.readyState==4) { alert("Enter State Changed Login 2"); if(xmlhttp.responseText=="Login again") { window.location="http://server.com/profile.html"; } } } 

Lorsque je lance le code dans un autre navigateur, sauf pour IE6 et 7, la sortie me montre toutes les zones d'alerte à partir de: – Login saisi () – Etat saisi Changé Connexion – Entré GetEmailId () – Entrez l'état Changé Connexion 2

Puis l'emplacement de la fenêtre change à http://server.com/profile.html

Mais lorsque je lance la même chose sur IE 6 ou 7, le code ne passe pas dans statechangedLogin2 (), et donc les seules alertes que je reçois ici sont:

 * Entered Login() * Entered State Changed Login * Entered GetEmailId() 

Je ne peux pas comprendre pourquoi ce problème se produit. Pourquoi cela se passe-t-il et que dois-je changer? Le projet fonctionne parfaitement sur d'autres navigateurs, y compris IE8.

Est-ce que quelqu'un peut m'aider à comprendre cette question?

Bonjour, je suis désolé de poster ma question à nouveau. Mais je n'obtenais aucune solution là-bas, alors j'ai essayé de le faire. Tu m'excuses à ce sujet.

Quoi qu'il en soit, j'ai pu résoudre la situation avec l'aide de mon patron.

Tout ce que j'ai fait était de donner à GetEmailId sa propre session. quelque chose comme ça:

Function GetEmailId ()

{Alert ("Entré GetEmailId ()"); XmlhttpTwo = GetXmlHttpObject () var url = "http://server.com/GetPostEmail.php&quot;; Url = url + "& sid =" + Math.random (); XmlhttpTwo.onreadystatechange = statechangedLogin2; XmlhttpTwo.open ("GET", url, true); XmlhttpTwo.send (null); }

J'ai essayé cela et ça marche parfaitement sur IE 6 n 7 … 🙂

Meilleur Zeeshan

Pouvez-vous utiliser JQuery, Prototype, Ext JS Base ou l'un des autres frameworks Javascript disponibles gratuitement pour le faire à la place?

Il y a un grand nombre de petites incohérences dans le navigateur, donc je ne recommande pas de réinventer la roue – je sais, je l'ai fait avant.