How to create an object of XMLHttpRequest
兼容性问题是个大问题。昨天(20090621)跑到公司加班,但 Ajax 没反应,百思不得其解,早晨搜"Msxml2.XMLHTTP 和 Microsoft.XMLHTTP 区别"终于查到,下面是代码:
function xmlHttp() {
xmlhttp = false;
xmlhttpObj = ["MSXML2.XmlHttp.5.0","MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.3.0","MSXML2.XmlHttp","Microsoft.XmlHttp"];
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else if(window.ActiveXObject) {
for(i=0;i<xmlhttpObj.length;i++) {
xmlhttp = new ActiveXObject(xmlhttpObj);
if (xmlhttp) {
break;
}
}
} else {
alert("暂时不能创建XMLHttpRequest对象");
}
return xmlhttp?xmlhttp:false;
}
注, 以上方法在公司的机器里并不奏效!
反而是下面的简单代码无敌:
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
另外公司原先还使用这样的方式:
else if ( window.ActiveXObject ) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xhr = false;
}
}
参考: