我已经查看了答案,但似乎无法找到解决此问题的方法。此外,similar question仍未得到答复。
我使用IE8发送XMLHttpRequest但它永远不会被发送。 IE8支持XMLHttpRequest对象,为什么它不发送? (我不能为此使用jQuery。)
我的代码:
window.onload = function() {
// Create the HTTP object
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
alert("couldn't load data");
}
var dataUrl = "./data2.json";
alert("sending");
xmlhttp.open("GET", dataUrl, true);
alert("sent");
xmlhttp.onreadystatechange = function() {
//ready?
if (xmlhttp.readyState != 4)
return false;
//get status:
var status = xmlhttp.status;
//maybe not successful?
if (status != 200) {
alert("AJAX: server status " + status);
return false;
}
//Got result. All is good.
alert(xmlhttp.responseText);
return true;
}
xmlhttp.send(null);
}
alert('sent');
永远不会被调用,但alert('sending');
会被调用。如何使这个xmlhttp请求有效?
编辑:我已更新我的代码以包含针对IE8的XDomainRequest。这让我超越了xmlhttp.open部分,但现在我得到了一个"未指定的错误"在xmlhttp.send部分。
已编辑的代码(注意:我将变量名称从xmlhttp
更改为xhr
。):
window.onload = function() {
// Create the HTTP object
var xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
alert("couldn't load data");
}
var dataUrl = "./data2.json";
alert("sending");
if ("withCredentials" in xhr) {
// XHR for Chrome/Firefox/Safari
xhr.open('get', dataUrl, true);
}else if (typeof XDomainRequest != "undefined") {
// XDomainRequest for IE.
xhr = new XDomainRequest();
xhr.open('get', dataUrl);
alert("opened");
} else{
alert('CORS not supported');
};
xhr.onprogress = function () { };
xhr.ontimeout = function () { };
xhr.onerror = function () { alert('error'); };
xhr.onload = function() {
alert(xhr.responseText);
}
setTimeout(function () {xhr.send();}, 0);
}
警报('错误&#39);被叫。