我遇到了一个问题,即Microsoft Edge浏览器无法执行XmlHttpRequest.onload
。但是它确实可以在Chrome,Firefox和Safari中执行。
我正在创建一个XmlHttpRequest对象:
var xhr = new XMLHttpRequest();
xhr.responseType = "json";
xhr.open("POST", authenticateUrl, true);
xhr.setRequestHeader("X-OpenAM-Username", email);
xhr.setRequestHeader("X-OpenAM-Password", password);
xhr.setRequestHeader("Content-Type", "application/json");
alert("XHR object is created");
xhr.onload = function () {
alert("start onload...");
//...receives response from service...
}
xhr.send();
已发出警报以验证其是否已到达特定代码行。创建XMLHttpRequest对象后,代码进入onload
函数。 Microsoft Edge不会加入。如我所说,Chrome,Firefox和Safari可以很好地执行此代码。
让Microsoft Edge运行此代码是否还需要其他东西?
答案 0 :(得分:0)
在发送XHR并返回响应之前,不应调用onload函数(除非出现错误)。您在打电话给xhr.send()吗?
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget/onload
答案 1 :(得分:0)
将xhr.responseType = "json"
行放在xhr.open(...)
之后
因为同步请求不允许使用xhr.responseType
,同步请求是由open()
调用中的第三个参数确定的。
等等,那是在IE11中,我已经在Edge中尝试了您的代码段,并且运行得很好。
尝试添加
xhr.onerror = err => alert('Error:' + err.message);
查看是否发生错误。