我有以下代码段:
self.xmlHttpReq = new XMLHttpRequest();
self.xmlHttpReq.onreadystatechange = function()
{
if(self.xmlHttpReq.readyState == 4 && self.xmlHttpReq.status == 200)
{
xmlDoc = self.xmlHttpReq.responseXML;
var xmlVar1 = xmlDoc.getElementsByTagName('var1')[0].childNodes[0].nodeValue;
var xmlVar2 = xmlDoc.getElementsByTagName('var2')[0].childNodes[0].nodeValue;
}
}
在IE中,错误代码显示:
object required, ajax request.js line num, char num
但是,这个相同的ajax请求在Firefox中运行良好。
答案 0 :(得分:3)
IE和Firefox具有XMLHttpRequest的不同对象名称,您必须检查浏览器并基于此声明新对象。
尝试这样的事情:
function getXHR() {
var xhr = false;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("msxml2.XMLHTTP");
} catch(e) {
try {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xhr = false;
}
}
}
return xhr;
}
前一段时间我从Jeremy Keith得到了这个,它从未让我失望过。
答案 1 :(得分:2)
Internet Explorer没有XMLHttpRequest
对象。相反,它使用ActiveX对象来实现相同的功能。所以,你需要改变这一行:
self.xmlHttpReq = new XMLHttpRequest();
为:
if (window.ActiveXObject) {
try {
self.xmlHttpReq = new ActiveXObject('Microsoft.XMLHTTP');
}
catch (e) {
self.xmlHttpReq = new ActiveXObject('Msxml2.XMLHTTP'); // for really old versions of IE. You can leave the try/catch out if you don't care to support browsers from the '90s.
}
}
else
self.xmlHttpReq = new XMLHttpRequest();