เมื่อเร็วๆ นี้ ฉันกำลังพัฒนาโปรแกรมเซิร์ฟเวอร์โดยใช้ ajax และพบว่าเบราว์เซอร์ IE ไม่รองรับอ็อบเจ็กต์ xmlhttprequest และไม่พบตัวควบคุม Microsoft.XMLHTTP
เกิดปัญหาขึ้นซึ่งเราต้องแก้ไข วิธีแก้ไขมีดังนี้:
1. เรียกใช้ regsvr32 msxml3.dll;
2. ใช้เฟรมเวิร์กสำเร็จรูปเพื่อทำอาแจ็กซ์
3. การเพิ่มประสิทธิภาพโค้ด:
if (window.ActiveXObject)
-
xmlHttp = ใหม่ ActiveXObject("Microsoft.XMLHTTP");
-
อย่างอื่นถ้า (window.XMLHttpRequest)
-
xmlHttp = XMLHttpRequest ใหม่();
}
ถ้า (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);
หรือกำหนดเบราว์เซอร์
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("โอเปร่า") != -1);
var is_mac = (agt.indexOf("mac") != -1);
var is_gecko = (agt.indexOf("ตุ๊กแก") != -1);
var is_safari = (agt.indexOf("safari") != -1);
ฟังก์ชัน CreateXmlHttpReq (ตัวจัดการ) {
var xmlhttp = null;
ถ้า (is_ie) {
// รับรองว่าเป็น ie5 หรือ ie6
var control = (is_ie5) ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"
;
xmlhttp = ActiveXObject ใหม่ (ควบคุม);
xmlhttp.onreadystatechange = ตัวจัดการ;
} จับ (เช่น) {
// TODO: ข้อความช่วยเหลือที่ดีกว่า
alert("คุณต้องเปิดใช้งานสคริปต์ที่ใช้งานอยู่และตัวควบคุม activeX");
}
} อื่น ๆ {
// Mozilla
xmlhttp = XMLHttpRequest ใหม่();
xmlhttp.onload = ตัวจัดการ;
xmlhttp.onerror = ตัวจัดการ;
}
กลับ xmlhttp;
}
หรือ