我正在成功地运行以下脚本:它每3s更新一次文本
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>
$(function() {
window.setInterval(function() {
loadNewText()
}, 3000)
function loadNewText() {
$.ajax({
url: "/update_report",
type: "POST",
dataType: "json",
success: function(data) {
$(report).replaceWith(data)
}
});
}
});
</script>只有在Python代码中的某些变量发生变化时,我才希望将HTML中的函数更改为运行'loadNewText()‘!
我将变量放在python路由中:
@app.route('/console-output')
def console_output():
fileHandle = open("console_output.txt", "r")
lineList = fileHandle.readlines()
fileHandle.close()
last= lineList[len(lineList)-1]
with open('console_output.txt', 'r') as r:
co =r.read()
return render_template("console-output.html",console_output_msg=console_output_msg, last=last, co=co)并用HTML编写以下代码:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>
$(function() {
if (last != console_output_msg) {
loadNewText();
}
function loadNewText() {
$.ajax({
url: "/update_text",
type: "POST",
dataType: "json",
success: function(data) {
$(new_text).replaceWith(data)
}
});
}
});
</script>这个方法不工作!我对Javascript没有很大的经验!我不知道我是否没有以正确的方式调用变量(最后,console_output_msg),或者我的函数不是valide!
如果有任何方法来纠正它,或者在python代码发生更改时调用'loadNewText()‘的任何其他建议!
谢谢!
发布于 2021-04-22 01:57:21
无法访问客户端上的服务器变量。
您可以将前面的输出保存在JavaScript变量中,并且只有在DOM发生更改时才更新它。在if语句收到响应后,您需要将它放入loadNewText()函数中,这样它就可以比较它了。
这不会跳过AJAX调用,但是当没有任何变化时,它将避免刷新页面。
$(function() {
let last_output;
window.setInterval(loadNewText, 3000)
function loadNewText() {
$.ajax({
url: "/update_report",
type: "POST",
dataType: "json",
success: function(data) {
if (data != last_output) {
$(report).replaceWith(data);
last_output = data;
}
}
});
}
});
发布于 2021-04-22 01:57:51
在Python中发生更改时,有两种常用的更新文本的方法:
使用setInterval()函数触发对服务器的ajax调用,以检查是否有任何更改。
实现服务器和浏览器之间的WebSocket连接。接收从服务器发送的消息。
用Python实现WebSocket的链接。
https://stackoverflow.com/questions/67205585
复制相似问题