【发布时间】:2021-04-28 20:58:20
【问题描述】:
我正在尝试使用烧瓶制作应用程序。这是我的代码的一部分:
base.html
<div id= "contents">
<button onclick="changeContents()">Click me</button>
{% block text %}{% endblock %}
</div>
<script>
function changeContents() {
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "index", true);
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("contents").innerHTML = xhttp.responseText;
}
}
xhttp.send();
}
</script>
index.html
{% extends "base.html" %}
{% block text %}
<p>Hello</p>
{% endblock %}
发生的情况是<div id = "contents"> 被整个 网页替换,所以我在网页中有一个网页。我想用
document.getElementById("contents").innerHTML = '<object type="text/html" data="index" ></object>';
它也做了同样的事情,但页面内的页面更小。为什么要这样做?是否有使用纯 javascript 或 jQuery 的简单解决方案?
编辑:
代替
document.getElementById("contents").innerHTML = xhttp.responseText;
我已经删除了整个网页,只是写了
document.body.innerHTML = xhttp.responseText;
它有效,但我很确定这是不好的做法..
【问题讨论】:
-
发生的情况是被整个网页替换,所以我在网页中有一个网页。这正是应该做的,所以这里没有错。您需要做的是a)在服务器上检测ajax调用并仅发送您需要的信息或b)通过xhttp.responseText搜索并提取您需要的部分。@Syed 我不太擅长 ajax。我真的找不到第二个选项的解决方案..检查我的答案我已尝试尽可能举例说明。
标签: javascript html jquery ajax flask