Ajax Grails formRemote重定向,而不仅仅是调用方法

Ajax Grails formRemote重定向,而不仅仅是调用方法,ajax,grails,redirect,groovy,Ajax,Grails,Redirect,Groovy,我是Grails新手,在g:formRemote命令方面遇到了一些问题 我想要一个g:textArea框向我的控制器发送消息并保存此消息。 之后,应通过表单远程Ajax更新页面,以便消息显示在页面上 但是,formRemote调用没有更新页面,而是假定给定的url是真实的链接,并希望我重定向到此(不存在的).jsp站点)。 我想启动的方法在我的控制器tho中被调用 我尝试了许多类似问题的解决方案,但似乎这个问题与他们的不同 代码如下: <div id="history"> &

我是Grails新手,在g:formRemote命令方面遇到了一些问题

我想要一个g:textArea框向我的控制器发送消息并保存此消息。 之后,应通过表单远程Ajax更新页面,以便消息显示在页面上

但是,formRemote调用没有更新页面,而是假定给定的url是真实的链接,并希望我重定向到此(不存在的).jsp站点)。
我想启动的方法在我的控制器tho中被调用

我尝试了许多类似问题的解决方案,但似乎这个问题与他们的不同

代码如下:

<div id="history">
    <g:render template="posts" collection="${ messages }" var="message" />
</div>
<div class="postMessageForm">
    <g:formRemote name="postChatMessage" url="[controller: 'meetingRoom', 
                  action: 'postMessage']" update="history">                             
    <div class="msg_box">
        <g:textArea name="message" value="" style="width: 630px"/><br/>
    </div>
    <div style="float: right;">
        <g:submitButton name="Send" style="width: 90px; height: 40px;"/>
    </div>
    </g:formRemote>
</div>
我在杰夫·布朗的推特教程中看到了这种方法

我看到的可能失败:

  • out-commented-render-template命令与Ajax有关(当我没有对其进行注释时,唯一发生的事情是模板帖子将呈现在重定向页面上)
  • Ajax和jQuery的使用(但我不认为这是重点,因为我只使用了g:和groovy,甚至没有导入jQuery库)
  • 使用remoteFunction可能会更容易(在这种情况下,我真的不知道如何让remoteFunction工作)

我希望这些信息足以让人看到我遗漏了什么

当在表单上单击submit按钮时,数据将发送到formRemote标记的url参数中列出的方法。然后,您在该方法中,您将获得注释掉的render标记,该标记将数据输出回表单中提到的div中的gsp页面e formRemote标记的更新标记

formRemote依赖javascript库来处理grails文档中提到的ajax内容:

7.7.1 Ajax支持

默认情况下,Grails附带jQuery库,但通过 插件系统提供对原型等其他框架的支持, 道场:http://dojotoolkit.org/,雅虎用户界面:http://developer.yahoo.com/yui/ 以及GoogleWebToolkit。本节介绍Grails对 要开始,请将这一行添加到 您的页面:

您可以将jQuery替换为任何 由您安装的插件提供的其他库。此功能有效 因为Grails支持自适应标记库 Grails的插件系统支持多种不同的Ajax 图书馆包括(但不限于):

jQuery原型Dojo YUI MooTools


因此,删除history div中的内容,取消对postMessage方法中的两行的注释,并包含一个引用的javascript库。

当在表单上单击submit按钮时,数据将发送到formRemote标记的url参数中列出的方法。然后,您在该方法中,您将进入已注释的render标记,将数据输出回formRemote标记的更新标记中提到的div中的gsp页面

formRemote依赖javascript库来处理grails文档中提到的ajax内容:

7.7.1 Ajax支持

默认情况下,Grails附带jQuery库,但通过 插件系统提供对原型等其他框架的支持, 道场:http://dojotoolkit.org/,雅虎用户界面:http://developer.yahoo.com/yui/ 以及GoogleWebToolkit。本节介绍Grails对 要开始,请将这一行添加到 您的页面:

您可以将jQuery替换为任何 由您安装的插件提供的其他库。此功能有效 因为Grails支持自适应标记库 Grails的插件系统支持多种不同的Ajax 图书馆包括(但不限于):

jQuery原型Dojo YUI MooTools


因此,删除history div中的内容,取消对postMessage方法中的两行的注释,并包括一个引用的javascript库。

对不起,我感觉我忘记了一些东西(需要另外编写)..我已经通过导入了库..不幸的是,这不是问题所在。我试图在html代码中保留render命令,但控制器中的render命令是在这个新的(不存在的)postMessage.gsp中执行的。因此,我没有获得update=“history”是的,他试图根据my action=input重定向到gsp文件。在浏览器的开发者工具中,您是否看到prototype.js文件或类似文件被拉入?您是对的,prototype.js不是由formRemote导入的,您的formRemote正在将会话发送到与postMessage.gsp视图关联的postMessage方法。您所显示的.gsp的url是什么?您可以创建您所显示的.gsp postMessage.gsp,或者您可以从控制器中拉出渲染并将其放入history div,从formRemote中删除更新,并在控制器中添加重定向,将messages变量传递到您所拥有的.gsp中的任何插入项,如i这不仅仅是一个问题。我尝试了一些其他方法,也尝试了一些被认为效果不错的教程。没有执行一个Ajax命令。因此,我认为没有必要在我编写的代码中搜索问题,而是搜索Ajax的未解释/未解释有什么问题。我将重新安装Grails我很抱歉,我有种感觉我忘记了一些东西(要另外编写)…我已经通过导入了lib..不幸的是,这不是问题所在。我试图将render命令保留在html代码中,但控制器中的render命令是在这个新的(不存在)中执行的因此,他没有正确地获取update=“history”,而是尝试根据my action=input重定向到gsp文件。在浏览器的开发者工具中,您是否看到prototype.js文件或类似文件被删除
def postMessage() {
if (params.message != "") {
    def thisUser = lookUpUser()
    def thisRoom = thisUser.joinedRoom
    def chatPost = new ChatPost(
        message: params.message,
        author: thisUser
    )
    thisRoom.addToChatHistory(chatPost)
}
//  def messages = currentChatHistory()
//  render template: 'posts', collection: messages, var: 'message'