XmlHttpRequest.onload не работает в браузере Edge - PullRequest
0 голосов
/ 11 октября 2018

Я сталкиваюсь с проблемой, когда браузер 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 голосов
/ 11 октября 2018

Поместите строку xhr.responseType = "json" после xhr.open(...)

Поскольку xhr.responseType не разрешен для синхронных запросов, что определяется третьим параметром в вызове open().

Подождите, это было в IE11, я попробовал ваш фрагмент в Edge, и он работал нормально.

Попробуйте добавить

xhr.onerror = err => alert('Error:' + err.message);

, чтобы увидеть, произошла ли ошибка.

0 голосов
/ 11 октября 2018

Функция onload не должна вызываться до тех пор, пока вы не отправите XHR и ответ не вернется (если не будет ошибки).Вы звоните xhr.send ()?

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget/onload

...