Javascript jQuery和HTML中的If语句?

Javascript jQuery和HTML中的If语句?,javascript,python,html,jquery,flask,Javascript,Python,Html,Jquery,Flask,我成功地运行了以下脚本:它每3秒更新一次文本 <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

我成功地运行了以下脚本:它每3秒更新一次文本

<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>
并用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>

$(函数(){
如果(最后!=控制台输出消息){
loadNewText();
}
函数loadNewText(){
$.ajax({
url:“/update\u text”,
类型:“POST”,
数据类型:“json”,
成功:功能(数据){
$(新文本)。替换为(数据)
}
});
}
});
此方法不起作用!我对Javascript没有太多的经验!我不知道我调用变量(最后一个,console\u output\u msg)的方式是否正确,或者我的函数是否无效

如果有任何方法可以更正它,或者有任何其他建议可以在python代码中发生更改时调用'loadNewText()


谢谢

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

您可以将以前的输出保存在JavaScript变量中,并且仅在DOM发生更改时更新它。在收到响应后,需要将
if
语句放入
loadNewText()
函数中,以便它可以对其进行比较

这不会跳过AJAX调用,但可以避免在没有任何更改时刷新页面

$(函数(){
让最后的输出;
window.setInterval(loadNewText,3000)
函数loadNewText(){
$.ajax({
url:“/update\u report”,
类型:“POST”,
数据类型:“json”,
成功:功能(数据){
if(数据!=最后一次输出){
$(报告)。替换为(数据);
最后输出=数据;
}
}
});
}

});当Python发生更改时,有两种常用的方法来更新文本:

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

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

    用于在Python中实现WebSocket的链接。


您无法访问客户端中的服务器变量。您已经去掉了
setInterval
,因此它不会重复运行。您想要的在逻辑上是不可能的。Python代码只有在进行AJAX调用后才会运行。所以这个变量在你调用它之前不会得到一个值,只有这样,您才能测试它是否已从上一次调用更改。@Barmar是否可以使用
setInterval
比较来自Python代码的两个变量,并在特定条件下运行该函数?您需要进行AJAX调用,以将变量从Python转换为JS。@Barmar能否给出一个示例或链接我在哪里可以找到更多关于这个解决方案的信息?他在问如何实现长轮询,他只是没有这么说。@Barmar是的,我想这是他最简单的方法。因为他想取消调用
loadNewText()
函数,我让他知道,如果他不知道,还有另一个选项。谢谢你的解释,但我的问题是,我想避免每隔3秒调用一次函数!我的意思是避免每3秒访问更新报告路径!我正在寻找一种解决方案,只在Python中输入的某个文本文件发生更改时才进行更新!谢谢你必须打电话给服务器,客户端无法知道服务器上的文件是否已更改。这里有一个类比:你只想在你母亲生病时打电话给她。但是如果不打电话问她,你就无法知道她是否生病了。好吧!谢谢你的耐心!我将寻找更多关于它的信息!
<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>