在快递服务器中,我有这个。
app.dynamicHelpers({
dynamicValue: function(req, res) {
console.log("returning a new value");
return parseInt(Math.random() * 100);
}
});
在客户端我有这个。
setInterval(function() {
alert(<%= dynamicValue %>);
}
,1000);
所以每一秒都应该显示一个新号码。
但事实并非如此。当页面加载时,会生成一个新的数字,但除非重新加载页面,否则客户端看到的数字总是相同的。
如何改变它来做它应该做的事情?
答案 0 :(得分:1)
您正在此处混合服务器代码和客户端代码。语句<%= dynamicValue %>
将值呈现到页面上的脚本中:
setInterval(function() {
alert(<%= dynamicValue %>);
}
,1000);
变为
setInterval(function() {
alert(82.9090561);
}
,1000);
此脚本稍后由浏览器解释。浏览器无法访问“服务器脚本代码库”。
为了在客户端上完成这项工作,您需要包含在页面上创建随机数的特定脚本:
<script type="text/javascript" src="dynamic.js" />
<script type="text/javascript">
setInterval(function() {
alert(smth.dynamicValue());
}
,1000);
</script>