เมื่อเร็วๆ นี้ ฉันกำลังพัฒนาโปรแกรมเซิร์ฟเวอร์โดยใช้ 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;
}
หรือ
<script language="javascript">
var http_request = false;
ฟังก์ชัน send_request(url) {//การกำหนดค่าเริ่มต้น ฟังก์ชันการประมวลผลที่กำหนด ฟังก์ชันส่งคำขอ
http_request = เท็จ;
//เริ่มการเริ่มต้นวัตถุ XMLHttpRequest
if (window.XMLHttpRequest) { // เบราว์เซอร์ Mozilla
http_request = XMLHttpRequest ใหม่ ();
if (http_request.overrideMimeType) {//ตั้งค่าหมวดหมู่ MiME
http_request.overrideMimeType('ข้อความ/xml');
-
-
อื่นถ้า (window.ActiveXObject) { // เบราว์เซอร์ IE
พยายาม {
http_request = ใหม่ ActiveXObject("Msxml2.XMLHTTP");
} จับ (e) {
พยายาม {
http_request = ใหม่ ActiveXObject("Microsoft.XMLHTTP");
} จับ (จ) {}
-
-
ถ้า (!http_request) { //ข้อยกเว้น ไม่สามารถสร้างอินสแตนซ์วัตถุได้
window.alert("ไม่สามารถสร้างอินสแตนซ์ออบเจ็กต์ XMLHttpRequest ได้");
กลับเท็จ;
-
http_request.onreadystatechange = คำขอกระบวนการ;
// กำหนดวิธีการและ URL ของการส่งคำขอ และพิจารณาว่าจะดำเนินการโค้ดถัดไปพร้อมกันหรือไม่
http_request.open("GET", url, true);
http_request.send(null);
-
// ฟังก์ชั่นที่จัดการข้อมูลที่ส่งคืน
ฟังก์ชัน processRequest() {
if (http_request.readyState == 4) { // กำหนดสถานะของวัตถุ
if (http_request.status == 200) {//ข้อมูลถูกส่งกลับเรียบร้อยแล้ว ให้เริ่มประมวลผลข้อมูล
var returnObj = http_request.responseXML;
var xmlobj = http_request.responseXML;
พนักงาน var = xmlobj.getElementsByTagName("พนักงาน");
varข้อเสนอแนะStr = "";
for(var i=0;i<employees.length;i++) { // วนซ้ำเพื่ออ่านเนื้อหาของ Employee.xml
พนักงาน var = พนักงาน [i];
commentStr += "พนักงาน:" + Employee.getAttribute("name");//รับแอตทริบิวต์ที่ระบุของป้ายกำกับ
commentStr += "ตำแหน่ง:" + Employee.getElementsByTagName("job")[0].firstChild.data;//รับข้อมูลแรกของแท็กที่ระบุ
commentStr += "เงินเดือน:" + Employee.getElementsByTagName("salary")[0].firstChild.data;
ข้อเสนอแนะStr += "rn";
-
การแจ้งเตือน (feedbackStr);
} else { //หน้านี้ผิดปกติ
alert("มีข้อยกเว้นในเพจที่คุณร้องขอ");
-
-
-
</สคริปต์>
http://www.cnblogs.com/skylaugh/archive/2006/11/20/566164.html