XmlHttpRequest.onload在Edge浏览器中不起作用

时间:2018-10-11 18:30:52

标签: javascript microsoft-edge onload

我遇到了一个问题,即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运行此代码是否还需要其他东西?

2 个答案:

答案 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);

查看是否发生错误。