首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery和HTML中的If语句?

jQuery和HTML中的If语句?
EN

Stack Overflow用户
提问于 2021-04-22 01:35:56
回答 2查看 130关注 0票数 2

我正在成功地运行以下脚本:它每3s更新一次文本

代码语言:javascript
复制
<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路由中:

代码语言:javascript
复制
@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编写以下代码:

代码语言:javascript
复制
<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()‘的任何其他建议!

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-04-22 01:57:21

无法访问客户端上的服务器变量。

您可以将前面的输出保存在JavaScript变量中,并且只有在DOM发生更改时才更新它。在if语句收到响应后,您需要将它放入loadNewText()函数中,这样它就可以比较它了。

这不会跳过AJAX调用,但是当没有任何变化时,它将避免刷新页面。

代码语言:javascript
复制
$(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;
        }
      }
    });
  }
});

票数 0
EN

Stack Overflow用户

发布于 2021-04-22 01:57:51

在Python中发生更改时,有两种常用的更新文本的方法:

  • Long轮询

使用setInterval()函数触发对服务器的ajax调用,以检查是否有任何更改。

  • WebSocket

实现服务器和浏览器之间的WebSocket连接。接收从服务器发送的消息。

用Python实现WebSocket的链接。

https://websockets.readthedocs.io/en/8.1/intro.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67205585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档