Récemment, je développais un programme serveur utilisant ajax et j'ai découvert que le navigateur IE ne prenait pas en charge l'objet xmlhttprequest et que le contrôle Microsoft.XMLHTTP était introuvable.
Un problème surgit que nous devons résoudre. La solution est la suivante :
1. Exécutez regsvr32 msxml3.dll ;
2. Utilisez des frameworks prêts à l'emploi pour faire de l'ajax ;
3. Optimisation du code :
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
sinon si (window.XMLHttpRequest)
{
xmlHttp = nouveau XMLHttpRequest();
}
si(handle_s == null)
handle_s = "bin/normal.py/db";
this.xmlHttp.onreadystatechange = handle_l;
this.xmlHttp.open("GET",handle_s,true);
this.xmlHttp.send(null);
ou déterminez le navigateur
var agt = navigator.userAgent.toLowerCase();
var is_ie = (agt.indexOf("msie") != -1);
var is_ie5 = (agt.indexOf("msie 5") != -1);
var is_opera = (agt.indexOf("opera") != -1);
var is_mac = (agt.indexOf("mac") != -1);
var is_gecko = (agt.indexOf("gecko") != -1);
var is_safari = (agt.indexOf("safari") != -1);
function CreateXmlHttpReq(handler) {
var xmlhttp = null;
si (est_ie) {
// Garanti d'être ie5 ou ie6
var contrôle = (is_ie5) ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"
;
xmlhttp = new ActiveXObject(contrôle);
xmlhttp.onreadystatechange = gestionnaire ;
} attraper (ex) {
// TODO : meilleur message d'aide
alert("Vous devez activer les scripts actifs et les contrôles activeX");
}
} autre {
// Mozilla
xmlhttp = nouveau XMLHttpRequest();
xmlhttp.onload = gestionnaire ;
xmlhttp.onerror = gestionnaire;
}
return xmlhttp;
}
ou
<script language="javascript">
var http_request = faux ;
function send_request(url) {//Initialisation, fonction de traitement désignée, fonction pour envoyer la requête
http_request = faux ;
// Commence à initialiser l'objet XMLHttpRequest
if(window.XMLHttpRequest) { //Navigateur Mozilla
http_request = nouveau XMLHttpRequest();
if (http_request.overrideMimeType) {//Définir la catégorie MiME
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // navigateur IE
essayer {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} attraper (e) {
essayer {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} attraper (e) {}
}
}
if (!http_request) { //Exception, échec de création de l'instance d'objet
window.alert("Impossible de créer une instance d'objet XMLHttpRequest.");
renvoie faux ;
}
http_request.onreadystatechange = processRequest;
// Détermine la méthode et l'URL d'envoi de la requête et s'il faut exécuter le code suivant de manière synchrone
http_request.open("GET", url, true);
http_request.send(null);
}
// Fonction qui gère les informations renvoyées
fonction processRequest() {
if (http_request.readyState == 4) { // Déterminer l'état de l'objet
if (http_request.status == 200) { //Les informations ont été renvoyées avec succès, commencez à traiter les informations
var returnObj = http_request.responseXML;
var xmlobj = http_request.responseXML;
var employés = xmlobj.getElementsByTagName("employé");
var feedbackStr = "";
for(var i=0;i<employees.length;i++) { // Boucle pour lire le contenu du fichier employes.xml
var employé = employés[i];
feedbackStr += "Employee:" + employe.getAttribute("name");//Obtenir l'attribut spécifié de l'étiquette
feedbackStr += "Position:" + employe.getElementsByTagName("job")[0].firstChild.data;//Obtenir les premières données de la balise spécifiée
feedbackStr += "Salaire :" + employe.getElementsByTagName("salaire")[0].firstChild.data;
feedbackStr += "rn";
}
alerte(feedbackStr);
} else { //La page est anormale
alert("Il y a une exception dans la page que vous avez demandée.");
}
}
}
</script>
http://www.cnblogs.com/skylaugh/archive/2006/11/20/566164.html