我有一个使用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>
答案 0 :(得分:0)
我认为你错过了函数包装器,如下所示:
setInterval(function() { $("#data").load("/currentdev"); }, 5000);
否则立即调用load()
,其返回值实际用于setInterval的函数参数。