[英]How can force web browser to render Ajax response, which is whole html page?
目的是,當接收到Ajax響應以強制瀏覽器呈現“ responseText”像加載新的html頁面時。 在文檔的“ innerHTML”中添加“ responseText”,不強制瀏覽器使用新添加的標記對頁面進行重排。
的HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>START BOOTSRAP 4</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<div class="container-fluid">
<h1>BOOTSTRAP 4 NAV</h1>
</div>
<div class="horizontal-line"></div>
<p>The <kbd>.nav</kbd>, <kbd>.nav-item</kbd>, <kbd>.nav-link</kbd> classes:</p>
<ul class="nav">
<div class="nav-item">
<a href="#" class="nav-link">Nav-Link-1</a>
</div>
</ul>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.6/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script>
</body>
</html>
的JavaScript
var xhttp = new XMLHttpRequest();
var html;
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
html = this.responseText;
// how to apply this 'html' that to see rendered web page
// with css styles etc.
}
};
// ---- Not working in this case... only for example ----
// var win = window.open("", "_self");
// win.document.open();
// win.document.write(html);
// win.document.close();
// ---- End of Not working in this case... only for example ----
xhttp.open("GET", "http://127.0.0.1/nav.html", true);
xhttp.send();
提前致謝 !
編輯:如果您需要加載外部CSS / JS或在頁面上動態運行腳本,則下面的普通JS將不起作用。 由於您使用的是jQuery,因此可以在加載外部文件和執行腳本的同時,使用jQuery的html
函數替換整個頁面的html
來實現此目的:
$("html").html(html);
編輯:以下使用Vanilla JS的解決方案僅適用於不依賴腳本執行或外部文件的簡單情況。
從ajax響應中獲取html
使用getElementsByTagName
獲取html
元素,並將其innerHTML
屬性設置為接收的HTML:
document.querySelector("html").innerHTML = html;
如果只需要替換頁面的body
,請獲取body
元素並將其innerHTML
屬性設置為接收的HTML:
document.body.innerHTML = html;
看看jQuery .load()
$("#idToAppendTo").load("your.html");
這是鏈接http://api.jquery.com/load/
或者,一旦您通過ajax請求獲得html,請使用此
document.getElementById("#idToAppendTo").innerHTML = this.responseText;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.