我的 grails 应用程序中有一个页面 X,其中有一个显示图表的按钮。它将使用域对象的 id 调用控制器,并且图表在另一个页面中呈现。到这里我都清楚了。
但是我必须每 20 秒重新加载一次渲染的图表页面。我的网站是一个私人网站,只有少数管理员用户。所以我决定使用简单的 javascript 轮询来进行刷新。这是图表gsp
页面中的片段,我想每 20 秒重新加载一次。也许使用 javascript setInterval
。
<g:render id="chart" template="/building/${chartTemplate}" model="${model}"></g:render>
我的控制器需要在创建图表时传入传感器 ID,我可以使用 java 脚本来执行此操作吗?如果是这样,我怎样才能将它从最初将它重定向到这里的控制器中获取到 javascript 函数。
这是我呈现图表的 GSP 模板。
<div id="linechart"></div>
<gvisualization:lineCoreChart dynamicLoading="${true}" elementId="linechart" title="${title}"
width="${750}" height="${450}" columns="${columns}" data="${data}"/>
我使用过一些奇怪的 javascript,但无法正常工作。
<input type="text" id="sensorid" disabled="disabled" value="${sid }"/>
<g:javascript>
var int=self.setInterval("chart()",1000);
var sensid;
function chart(){
var d=new Date();
var t=d.toLocaleTimeString();
sensid = document.getElementById("sensorid").value;
}
${remoteFunction(controller:"building", action:"createChart", params:"'sid=' + sensid")}
</g:javascript>
有没有办法让javascript重新加载页面。整页重新加载也很好。我对 javascript 的了解几乎为零,因此非常感谢任何帮助。