ajax - Grails:从AJAX响应获取对象/模型

我是Grails的新手,现在我正尝试使用AJAX从 Controller 到模板检索对象/模型。我想这样做,以便使messageBox模板可以访问sms属性,但这总是返回一个空值。有人可以帮我吗?任何答案将不胜感激,这是我当前的代码。

在我的客户上

    <g:form>
    <label for="id">Sms ID </label>
    <g:textField name="id" />
    <g:submitToRemote value="search" update="msgBox"
                  url="[controller:'sms', action:'send']"/>
 </g:form>
<g:render template="messageBox" model="${[sms:sms]}/>

我的 Controller
SmsController{

def send = {
  def sms = new Sms(...)
  //assume properties have been set
  ...
  ...
  render(template: messageBox, model:[sms:sms])
 }
}

和我的_messageBox.gsp
<div id="msgBox">
    <span>Sms Property 1: ${sms?.property1}</span>
    <span>Sms Property 2: ${sms?.property2}</span>
    <span>Sms Property 3: ${sms?.property3}</span>
</div>

最佳答案

这里似乎有一些后勤错误

首先,您似乎在两次租用messageBox模板。在您的“客户端” gsp中,您正在 call ...

  <g:render template="messageBox" model="${[sms:sms]}/>

除非在页面加载中提供一个,否则在页面加载时,“sms”将始终为null。然后您似乎也要在 Controller 中再次调用它...
render(template: messageBox, model:[sms:sms])

另外,我将div:'msgBox'移出模板,并移入您的客户端,例如...
  <g:form>
    <label for="id">Sms ID </label>
    <g:textField name="id" />
    <g:submitToRemote value="search" update="msgBox"
                  url="[controller:'sms', action:'send']"/>
 </g:form>
<div id="msgBox">Waiting for some AJAX!</div>

最后,请确保 header 中有一个javascript库,例如prototype或jquery。我不确定这是否可以解决您的问题,但这将是一个好的开始。让我知道!

https://stackoverflow.com/questions/6653607/

相关文章:

eclipse - egit 连接到 godaddy 共享帐户上的 git 存储库的问题

ssh - vagrant ssh key 鸡和蛋

ruby-on-rails - 访问 GitHub 私有(private)仓库时部署到 ec2 实例

grails - 在Grails中为ShiroUser指定软件包

vim - 在Debian上的Vim:cterm = bold不起作用(在以PuTTy作为客户端的s

grails - 为grails支架禁用sitemesh吗?

grails - Grails:对关系中的集合进行分页和排序

grails - 嵌套Jasper表达式

grails - 在Grails Spring-Security驱动的应用程序中两次登录尝试失败后,

php - 通过ssh2 sftp包装程序进行fopen会导致Chrome ERR_EMPTY_RE