【问题标题】:Issues with submitting form with AJAX in Grails 2.0在 Grails 2.0 中使用 AJAX 提交表单的问题
【发布时间】:2012-02-03 16:21:06
【问题描述】:

在我的 GSP 页面中,我有这个表格:

<g:form action="ajaxAdd">
  <g:textArea id='postContent' name="content" rows="3" cols="50"/><br/>
  <g:submitToRemote value="Post"
      url="[controller: 'post', action: 'addPostAjax']"
      update="allPosts"
  />            
</g:form>

在同一个页面中,我有这个 div:

<div class="allPosts">
    <g:each in="${user.posts}" var="post">
        <div class="postEntry">
            <div class="postText">
                ${post.content}
            </div>
            <div class="classDate">
                ${post.dateCreated}
            </div>
        </div>
    </g:each>
</div>

当我点击按钮时,应用程序确实会在我的控制器中触发操作addPostAjax,但问题是我无法找到如何发回user.posts 集合以填充我的allPosts分区。

请问有人有什么想法吗? 谢谢。

【问题讨论】:

    标签: jquery ajax grails groovy grails-2.0


    【解决方案1】:

    要在submitToRemote 标签上使用update 属性,您需要发回呈现的帖子。

    首先,将呈现用户帖子的 div 制作成模板,例如_userPosts.gsp。将页面中的 div 替换为 render 标签即可使用模板:

    <g:render template="userPosts" />
    

    然后在您的控制器中,addPostAjax 应该如下所示:

    def addPostAjax() {
        def user = ....
    
        render template: 'userPosts', model: [user: user], contentType: "text/plain"
    }
    

    另一种选择是 render user as JSON 并编写一些 javascript 来更新您的页面。

    【讨论】:

    • 感谢您的回复,我做到了,控制器内部的所有处理都完成了。但是 div 仍然不想更新
    • update 属性应该指定 div 的 id。在您的示例中,您需要添加id="allPosts" 来代替class="allPosts",或者添加class="allPosts"
    猜你喜欢
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多