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"; 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.