javascript - Grails 刷新谷歌图表

标签 javascript ajax grails gsp

我的 grails 应用程序中有一个页面 X,其中有一个用于显示图表的按钮。它将使用域对象的 id 调用 Controller ,并且图表将在另一个页面中呈现。到这里一切对我来说都清楚了。

但是我必须每 20 秒重新加载渲染的图表页面。我的网站是一个私有(private)网站,只有少数管理员用户。所以我决定使用简单的 javascript 轮询来进行刷新。 这是图表 gsp 中的片段我想每 20 秒重新加载一次页面。也许使用 javascript setInterval .
<g:render id="chart" template="/building/${chartTemplate}" model="${model}"></g:render>

我的 Controller 需要在创建图表时传入传感器 ID,我可以使用 Java 脚本来执行此操作吗?如果是这样,我如何从最初将其重定向到此处的 Controller 将其获取到 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 的了解几乎为零,因此非常感谢任何帮助。

最佳答案

既然您提到重新加载整个页面是可以接受的,那么有两种简单的方法是:

1) 在您的 GSP 中包含 META REFRESH 标签。例如:

<meta http-equiv="refresh" content="5">

这非常方便,特别是当您不需要更改参数时(例如,如果 Controller 处理诸如用于更新图表的当前日期/时间等任何内容)。

2) 通过 Javascript“setTimeout”或特定操作,调用重新加载(或“history.go(0)”或“window.location.href=window.location.href”)。

例如,用于测试按钮操作:

<input type="button" value="Reload this page" onClick="window.location.reload();">

或者每 5 秒自动执行一次,例如在这个中(非常精简,所以是的,我跳过了诸如 head、body 和其他标签之类的东西..)HTML 示例:

<script>
setTimeout("window.location.reload()",5000);
</script>

Hello world.

这使您可以更好地控制您所调用的内容,并且可以轻松修改以重定向到不同的 Controller 、具有新参数的同一 Controller 等。

关于javascript - Grails 刷新谷歌图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11074065/

相关文章:

jquery - Mailchimp "mce-error-response"创建文本而不是新标签

javascript - History API 和 History.js 后退按钮问题

javascript - jquery - ajax值为空后使div幻灯片向上

grails - Grails hasMany错误创建bean

Grails/Groovy 不会在对象的集合中持续更改

javascript - 更改包含特定字符串的 Jquery ui 自动完成结果

javascript - jquery 重置追加()

javascript - javascript forEach 循环可能出现奇怪的输出

javascript - 如何使用 React Native + React Redux 在嵌套 JSON API 中映射数组?

tomcat - Grails:WAR 文件部署:查找端口