Двойные запросы перенаправления ответа в XMLHttpRequest - PullRequest
0 голосов
/ 18 апреля 2020

Существует форма отправки запроса, на которую сервер будет отвечать либо обычным ответом 200/301 на перенаправление на другую страницу (это обрабатывается браузером внутри, ничего не поделать).

Зависит от запроса, ответ 200 означает, что некоторая часть DOM нуждается в обновлении, иначе перенаправление 301 на другую страницу.

Вот проблема, как обновить DOM с таким ответом? Если я использую обновление href из responseURL, он создает дублированный запрос как тот, который обрабатывается браузером внутри. Если я использую responseText для обновления всего DOM с помощью document.write(), появится предупреждение, и это будет плохая практика .

Как решить проблемы?

var form = ... //A form in the DOM

var xhttp = new XMLHttpRequest();
xhttp.onload = function() {
  //This will produce 1 extra request
  window.location.replace(this.responseURL);

  //This will be warned and should be prohibited
  document.write(this.response);
 };

xhttp.open("post", form.getAttribute("action"), true);
xhttp.send(new FormData(form));
...