我试图在http://localhost:8080/
上做一个简单的AJAX请求,并且在使用IE 11时我立即收到错误。我不认为IE甚至试图发送任何内容。
有人遇到过这个问题吗?
以下是显示此行为的fiddle
HTML:
<button id='btn1'>launch</button>
的onLoad:
var xhr,btn=document.getElementById('btn1');
btn.onclick=onButton;
var onReadyState=function(){
console.log('ready state:'+_xhr.readyState);
if(xhr.readyState===4){
console.log('status:'+_xhr.status);
}
}
function onButton(){
xhr=new window.XMLHttpRequest();
xhr.onreadystatechange=onReadyState;
xhr.open('POST','http://localhost:8080/ScanAPI/v1/client');
xhr.send();
}
在尝试之前,您需要启动IE F12开发人员工具,您将看到IE捕获异常。
对此的任何帮助将不胜感激。
谢谢!
答案 0 :(得分:2)
它不起作用,因为您正在引用_xhr
函数范围内不存在的名为onReadyState
的对象。
您应该使用this
代替:
var onReadyState = function() {
if (this.readyState === 4) {
console.log('status :' + this.status);
}
};
这是因为XMLHttpRequest
对象会使用自己的上下文回调onReadyState
,可以通过函数中的this
访问该上下文。
另请注意,onReadyState
函数在其定义的末尾错过了一个分号,并没有一眼就注意到它。
编辑:我还注意到IE10(和IE11)确实解释了some HTTP response code as network errors(例如使用401
响应代码),如果是你的情况,那么它因为IE在检索你的资源时失败了。
我将你的小提琴和wrote a simple page分开,与IE11配合得很好。