setInterval没有刷新Jade模板中的数据

setInterval not refreshing data in Jade template

本文关键字:数据 Jade 刷新 setInterval      更新时间:2023-09-26

我有一个使用Express和Jade的Node应用程序。我从API中提取json数据,我希望定期在页面上刷新这些数据。因此,我的想法是有一个空的div,然后将不同路由/模板的内容注入到该div中,并使用setInterval进行刷新。它最初加载,但从未刷新。以下是我的代码的相关部分:

board.jade:

extends layout
block content
  div(class='bodyBlock') 
    h1= title
    div#data

layout.jade:

!!! 5
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    script(type='text/javascript')(src='//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js')
  body
    block content
  script(type='text/javascript').
    $(document).ready(function(){
    setInterval ($("#data").load("/currentdev"), 5000 );
    });

/currentdev路由加载data.jade:

ul
  each card in inprogresscards
    li(style='margin-bottom: 5px')
      b #{card.color} #{card.name} #{card.idShort}

所以,正如我所说,/currentdev最初被加载到#data中,并在我的页面上正确显示。但它永远不会刷新。似乎setInterval的行为更像setTimeout。。。我错过了什么?谢谢

哦,这是生成的HTML:

<!DOCTYPE html>
<html>
<head>
  <title>Current Development Board</title>
  <link rel="stylesheet" href="/stylesheets/style.css">
  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
  <div class="bodyBlock">
    <h1>Current Development Board</h1>
      <div id="data"></div>
  </div>
</body>
<script type="text/javascript">$(document).ready(function(){
setInterval ($("#data").load("/currentdev"), 5000 );
});</script>
</html>

我认为您缺少函数包装器,如下所示:

setInterval(function() { $("#data").load("/currentdev"); }, 5000);

否则,load()会立即被调用,其返回值是setInterval函数参数实际使用的值。