最近在用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>
新聞熱點
疑難解答
圖片精選