使用Grails formRemote进行Prototype / JQuery混音

时间:2011-08-29 08:09:54

标签: jquery grails prototypejs

我正在尝试重新安排我的某些表格,我有一个奇怪的问题 和其中一个。 我总是使用jquery而不是原型,所以jquery插件是 安装和配置,我的布局在其头部有一个<g:javascript library="jquery" plugin="jquery"/>标签,和Config.groovy 包含grails.views.javascript.library="jquery"行。 到目前为止一切都很好。

现在我在我的页面中有一个g:formRemote这样声明:

<g:formRemote id="signUpForm" name="signUpForm" 
    url="[controller:'user', action:'register']" 
    onLoading="showRegistrationProgress()" 
    onComplete="hideRegistrationProgress()" 
    onSuccess="processRegistrationResponse(data)">
...
</g:formRemote>

但是当我点击提交按钮时,它完全绕过了jquery 事件处理程序并执行标准的非ajax提交。

当我查看Chrome中的javascript调试器时,我注意到了 我提交表单时出现以下错误消息:“未定义Ajax”。 事实上,当我查看生成的HTML时,我看到了表单 看起来像这样:

<form onsubmit="new Ajax.Request('/kodesk/user/register',...)" 
    method="POST" 
    action="/kodesk/user/register" 
    id="signUpForm" name="signUpForm">
....
</form>

这个“新的Ajax.Request”来自哪里?它不是原型代码吗?

2 个答案:

答案 0 :(得分:0)

尝试将<g:javascript library="jquery" />向下移动到视图中而不是布局中。我注意到这在过去为我解决了这个问题。在再次尝试clean之前,请尝试运行run-app

答案 1 :(得分:0)

在我阅读这篇文章之后,我找到了一种方法:http://grails.1312388.n4.nabble.com/newb-ajax-jquery-question-td1386031.html

我刚刚将<g:setProvider library="jquery"/>添加到我的页面头部,现在它可以正常工作了。我仍然不知道为什么它之前没有用,但这个解决方案对我来说已经足够了。