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 的帮助下。
解决这个问题有几个步骤:
- 我需要一个模板,其中包含我需要更新的div内容
- 我需要一个带有模型的控制器将所需的值传递给模板
- 我需要将其包含在 div 中,我想使用
进行更新
- 用 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()函数,结果好像是一样的
我有一组显示在 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 的帮助下。
解决这个问题有几个步骤:
- 我需要一个模板,其中包含我需要更新的div内容
- 我需要一个带有模型的控制器将所需的值传递给模板
- 我需要将其包含在 div 中,我想使用 进行更新
- 用 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()函数,结果好像是一样的