Как выбрать и заменить всю страницу с помощью jQuery - PullRequest
6 голосов
/ 27 апреля 2009

Мой дизайн страницы заставляет меня обновить всю страницу с помощью HTML, который я загрузил через ajax.

$('html').replaceWith(data);

дает мне ошибки. Есть идеи?

Ответы [ 5 ]

22 голосов
/ 30 октября 2013

У меня была такая же проблема, но это не помогло. Если вам также необходимо заменить тег <head> (то есть всю страницу), вы также можете сделать

document.write(newPage);
17 голосов
/ 27 апреля 2009

Использование тела:

$('body').replaceWith(data);
9 голосов
/ 24 октября 2011

У меня были некоторые проблемы с

$("body").replaceWith(newPage)

вызывает у меня некоторые странные проблемы с CSS, но это работает нормально:

$("body").html(newPage);
2 голосов
/ 12 июля 2016

Странное поведение jQuery.replaceWith и jQuery.html при выполнении с помощью селектора body. Вы теряете тег body после звонка:

$('body').replaceWith('<body>New body</body>');

Это не происходит с любым другим селектором, как:

$('title').replaceWith('<title>New title</title>');

Также jQuery.html не удваивает тег body (как это происходит с другими тегами) и работает как replaceWith при вызове так:

$('body').html('<body>New body</body>');

Надеюсь, это не серая зона jQuery. Или, если это так, они не думают это исправить. У меня есть приложения, где я использую $ ('body'). Html, когда следует использовать $ ('body'). ReplaceWith.

1 голос
/ 28 апреля 2018

это может быть решение, которое вам потребуется, Он заменяет весь документ, включая его заголовок . У вас не будет проблем с загрузкой ваших новых CSS, JS и других ресурсов. Я предполагал, что вы получите новый HTML-контент, вызвав API REST:

$.ajax({
  type: 'POST',
  url: form.attr('action'),
  data: form.serialize(), // serializes form elements
  success: function(response) {
    // re-writes the entire document
    var newDoc = document.open("text/html", "replace");
    newDoc.write(response);
    newDoc.close();
  }
});
...