2012-01-31 102 views
0

我想用grails的Ajax异步回调。在我的GSP文件的头,我有:grails remoteLink没有按预期工作

<g:javascript library="prototype" /> 
体内

我:

 <g:remoteLink controller="dashboard" action="showTime" update="time">Show the Time</g:remoteLink> 

    <div id="time"></div> 

我控制器上我有:

def showTime = { 
     System.print("time"); 
     render "The time is "; 
} 

我期望在div “时间”在我的gsp文件将被替换为渲染文本“时间就是”。相反,似乎没有任何事情发生。我知道我的控制器触发,因为System.print但没有更新在div中。

我注意到,页面的加载,我得到这个错误生成:“element.dispatch不是一个事件”在prototype.js页面。如果我删除

<g:javascript library="prototype" /> 

我不再得到这个错误,但整个页面被重定向到仪表板/欣欣

我在做什么错在这里?

感谢 杰森

+0

你使用的是哪个版本的Grails?你尝试过使用jquery javascript库吗? – 2012-01-31 21:35:02

+0

你好Seth,我使用1.3.7。如果我使用jquery而不是原型,我的上面的代码会如何改变?我对ajax仍然很陌生,谢谢 – jason 2012-01-31 21:43:12

+0

如果你安装了[jQuery插件](http://grails.org/plugin/jquery),它会添加一个将处理构建Ajax回调的jquery提供者。使用插件,你可以在你的gsp文件中使用''**来代替**'''。 – 2012-01-31 21:55:43

回答

0

你同时使用的jQuery(或其他一些JS库)和原型库?这个问题通常是由使用jquery.js和prototype.js引起的。你可能没有看到jquery被加载(可能是在布局或在< body>,检查JS库加载使用萤火虫。

如果你是加载两个,注释掉jquery,只是使用原型。它应该工作,更新< div>。我希望帮助。