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

时间:2011-07-11 16:51:57

标签: ajax grails response

我是Grails的新手,现在我正在尝试使用AJAX从控制器检索对象/模型到模板。我想这样做,以便消息框模板可以访问短信属性,但这总是会返回一个空值。任何人都可以帮我这个吗?任何答案都将不胜感激,这是我目前的代码。

在我的客户端

    <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]}/>

我的控制器

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>

1 个答案:

答案 0 :(得分:2)

这里似乎有一些后勤错误

首先,您似乎两次将messageBox模板重新发送。在您的客户中&#39;你打电话的gsp ......

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

在页面加载短信&#39;除非在页面加载中提供一个,否则将始终为null。然后你似乎也在控制器中再次调用它......

render(template: messageBox, model:[sms:sms])

另外,我会移动div:&#39; msgBox&#39;在模板之外,并在您的客户端之类的东西... ...

  <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>

最后,请确保您的标头中有一个javascript库,例如prototype或jquery。我不确定这会解决你的问题,但这将是一个良好的开端。让我知道!