最近在用ajax開發(fā)服務(wù)器程序,發(fā)現(xiàn)ie瀏覽器不支持xmlhttprequest對象,而且找不到microsoft.xmlhttp控件。
問題出現(xiàn)了我們需要解決,解決方案如下:
1、運行下regsvr32 msxml3.dll;
2、用現(xiàn)成的框架來做ajax;
3、代碼優(yōu)化:
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) {//初始化、指定處理函數(shù)、發(fā)送請求的函數(shù)
        http_request = false;
        //開始初始化xmlhttprequest對象
        if(window.xmlhttprequest) { //mozilla 瀏覽器
            http_request = new xmlhttprequest();
            if (http_request.overridemimetype) {//設(shè)置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) { // 異常,創(chuàng)建對象實例失敗
            window.alert("不能創(chuàng)建xmlhttprequest對象實例.");
            return false;
        }
        http_request.onreadystatechange = processrequest;
        // 確定發(fā)送請求的方式和url以及是否同步執(zhí)行下段代碼
        http_request.open("get", url, true);
        http_request.send(null);
    }
    // 處理返回信息的函數(shù)
    function processrequest() {
        if (http_request.readystate == 4) { // 判斷對象狀態(tài)
            if (http_request.status == 200) { // 信息已經(jīng)成功返回,開始處理信息
                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++) { // 循環(huán)讀取employees.xml的內(nèi)容
                    var employee = employees[i];
                    feedbackstr += "員工:" + employee.getattribute("name");//取得標(biāo)簽指定屬性
                    feedbackstr += " 職位:" + employee.getelementsbytagname("job")[0].firstchild.data;//取得指定標(biāo)簽的最初數(shù)據(jù)
                    feedbackstr += " 工資:" + employee.getelementsbytagname("salary")[0].firstchild.data;
                    feedbackstr +=  "/r/n";
                }
                alert(feedbackstr);
            } else { //頁面不正常
                alert("您所請求的頁面有異常。");
            }
        }
    }
</script>
新聞熱點
疑難解答
圖片精選