最近在用ajax开发服务器程序,发现IE浏览器不支持xmlhttprequest对象,而且找不到Microsoft.XMLHTTP控件。 问题出现了我们需要解决,解决方案如下: 1、运行下regsvr32 msxml3.dll; 2、用现成的框架来做ajax; 3、代码优化: if(window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if(window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } if(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("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; if (is_ie) { // Guaranteed to be ie5 or ie6 var control = (is_ie5) ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"; try { xmlhttp = new ActiveXObject(control); xmlhttp.onreadystatechange = handler; } catch (ex) { // TODO: better help message alert("You need to enable active scripting and activeX controls"); } } else { // Mozilla xmlhttp = new XMLHttpRequest(); xmlhttp.onload = handler; xmlhttp.onerror = handler; } return xmlhttp; } 或者 <script language="javascript"> var http_request = false; function send_request(url) {//初始化、指定处理函数、发送请求的函数 http_request = false; //开始初始化XMLHttpRequest对象 if(window.XMLHttpRequest) { //Mozilla 浏览器 http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) {//设置MiME类别 http_request.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { // IE浏览器 try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { // 异常,创建对象实例失败 window.alert("不能创建XMLHttpRequest对象实例."); return false; } http_request.onreadystatechange = processRequest; // 确定发送请求的方式和URL以及是否同步执行下段代码 http_request.open("GET", url, true); http_request.send(null); } // 处理返回信息的函数 function processRequest() { if (http_request.readyState == 4) { // 判断对象状态 if (http_request.status == 200) { // 信息已经成功返回,开始处理信息 var returnObj = http_request.responseXML; var xmlobj = http_request.responseXML; var employees = xmlobj.getElementsByTagName("employee"); var feedbackStr = ""; for(var i=0;i<employees.length;i++) { // 循环读取employees.xml的内容 var employee = employees[i]; feedbackStr += "员工:" + employee.getAttribute("name");//取得标签指定属性 feedbackStr += " 职位:" + employee.getElementsByTagName("job")[0].firstChild.data;//取得指定标签的最初数据 feedbackStr += " 工资:" + employee.getElementsByTagName("salary")[0].firstChild.data; feedbackStr += "\r\n"; } alert(feedbackStr); } else { //页面不正常 alert("您所请求的页面有异常。"); } } } </script> |