grails jquery 自动更新 div 从数据库中获取

grails jquery auto update div with fetching from DB

我有一组显示在 html 页面中,使用 <g:each>,在 div 中,例如 class="class1".

集合的内容如果在控制器中获取并传递到 session.someVariableName 中的 html 页面。

而且我需要每 10 秒更新一次 div。

我如何实现类似的东西?

我有一个可以正常工作的 jquery 脚本,如下所示:

 $(document).ready(
            function() {
                setInterval(function() {
                    $('.class1').toggle();
                }, 10000);
            });

它每 10 秒正确切换所需 div 的可见性。

我了解到要更新我必须使用函数 .load()。但是我如何实现这个特定的功能呢?我到处搜索,找不到与我的问题相关的内容。

我是否需要实现一个额外的控制器来生成仅包含所需 div 的视图并将 .load() 函数指向该视图?

不确定这是否有帮助,您的问题不是很清楚 - 您可以 运行 a jquery 获取更新 div 的输出,而不是 .html 你也可以使用 .append( 附加到内容。

 $(document).ready(
            function() {
                setInterval(function() {


                     $.get("/"+baseapp+"/controller/action?id="+id+"&two="+two,function(data){
                            $('.class1').html(data).fadeIn('slow');
                    });
                }, 10000);
            });

看看 jssh 插件,使用两者 ajax/websockets 来做一些与你的问题类似的事情。

我已经解决了!在 freenode 上来自 #grails 的 joshm76 的帮助下。

解决这个问题有几个步骤:

  1. 我需要一个模板,其中包含我需要更新的div内容
  2. 我需要一个带有模型的控制器将所需的值传递给模板
  3. 我需要将其包含在 div 中,我想使用
  4. 进行更新
  5. 用 jquery 我更新 div 内容

1) 模板是一个.gsp 文件,名称前带有_,如_myTemplate.gsp。将其放入您将要使用的控制器的视图文件夹中。

2)

    def action(){
    def var
    //some logic to populate the variable

    Map model = [myVar: var]
    render(template: '_myTemplate', model: model)
}

在模板中,可以使用 ${myVar}

访问变量

3) 在需要更新的 div 中,将 <g:include> 替换为之前的内容(现在内容在模板中)

<g:include controller='controller' action='action' />

4) jquery 部分(每 5 秒获取模板):

    $(document).ready(
            function() {
                setInterval(function() { 
                $('#divId').load('/app/controller/action');
                }, 5000);
            });

你也可以用$.get()函数,结果好像是一样的