لقد قمت مؤخرًا بتطوير برنامج خادم باستخدام ajax ووجدت أن متصفح IE لا يدعم كائن xmlhttprequest ولا يمكن العثور على عنصر تحكم Microsoft.XMLHTTP.
تنشأ مشكلة نحتاج إلى حلها، والحل هو كما يلي:
1. قم بتشغيل regsvr32 msxml3.dll؛
2. استخدم أطر عمل جاهزة للقيام بالآجاكس؛
3. تحسين الكود:
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
وإلا إذا (window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
إذا (handle_s == فارغة)
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("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;
إذا (is_ie) {
// مضمون أن يكون ie5 أو ie6
فار التحكم = (is_ie5) ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"
;
xmlhttp = new ActiveXObject(control);
xmlhttp.onreadystatechange = Handler;
} قبض (على سبيل المثال) {
// TODO: رسالة مساعدة أفضل
تنبيه("تحتاج إلى تمكين البرمجة النصية النشطة وعناصر تحكم ActiveX");
}
} else {
// موزيلا
xmlhttp = new XMLHttpRequest();
xmlhttp.onload = Handler;
xmlhttp.onerror = Handler
}
return xmlhttp;
}
أو
<script language="javascript">
فار http_request = خطأ؛
وظيفة send_request(url) {// التهيئة، وظيفة المعالجة المعينة، وظيفة إرسال الطلب
http_request = خطأ؛
// ابدأ في تهيئة كائن XMLHttpRequest
if(window.XMLHttpRequest) { //متصفح موزيلا
http_request = new XMLHttpRequest();
إذا (http_request.overrideMimeType) {// قم بتعيين فئة MiME
http_request.overrideMimeType('text/xml');
}
}
آخر إذا (window.ActiveXObject) {// متصفح IE
يحاول {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} قبض (ه) {
يحاول {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} قبض (ه) {}
}
}
if (!http_request) { //استثناء، فشل في إنشاء مثيل للكائن
window.alert("لا يمكن إنشاء مثيل كائن XMLHttpRequest.");
عودة كاذبة.
}
http_request.onreadystatechange =processRequest;
// تحديد الطريقة وعنوان URL لإرسال الطلب وما إذا كان سيتم تنفيذ الكود التالي بشكل متزامن
http_request.open("GET", url, true);
http_request.send(null);
}
// الوظيفة التي تعالج المعلومات التي تم إرجاعها
عملية طلب الوظيفة () {
if (http_request.readyState == 4) { // تحديد حالة الكائن
if (http_request.status == 200) { // تم إرجاع المعلومات بنجاح، ابدأ في معالجة المعلومات
var returnObj = http_request.responseXML;
var xmlobj = http_request.responseXML;
فار الموظفين = xmlobj.getElementsByTagName("employee");
var FeedbackStr = "";
for(var i=0;i<employees.length;i++) { // حلقة لقراءة محتويات الموظفين.xml
فار الموظف = الموظفين[i];
ردود الفعلStr += "Employee:" + member.getAttribute("name");// احصل على السمة المحددة للتسمية
ردود الفعلStr += "Position:" + member.getElementsByTagName("job")[0].firstChild.data;// احصل على البيانات الأولى للعلامة المحددة
ردود الفعلStr += "Salary:" + member.getElementsByTagName("salary")[0].firstChild.data;
ردود الفعلStr += "rn";
}
تنبيه (feedbackStr)؛
} else { // الصفحة غير طبيعية
تنبيه("هناك استثناء في الصفحة التي طلبتها.");
}
}
}
</script>
http://www.cnblogs.com/skylaugh/archive/2006/11/20/566164.html