Grails的简单AJAX示例

时间:2015-11-28 15:33:47

标签: ajax grails grails-3.0.9

我对Grails很陌生,我试图了解AJAX如何在Grails中运行。为此,我尝试从here修改多重AJAX示例,以便我的应用程序在页面上显示带有AJAX的输入字符串。 (为了澄清这一点:用户输入例如" foo"并且页面应显示" foo"在搜索字段下)

到目前为止,这是我的代码:

我的index.gsp模板,其中包含输入表单,并且应显示以表格形式输入的字符串:

<!doctype html>
<html>
<head>
</head>
<body>    
<div id="search">
    <g:render template="searchForm"/>
</div>
<div id="results">
    <g:render template="searchResultForm"/>
</div>
</body>
</html>

我的_searchForm.gsp模板,其中包含搜索表单:

<g:form>
    <label for="suchen"></label><g:textField name="suchen"/>
    <g:submitToRemote url="[controller:'search', action:'search']" update="results" value="Suchen"/>
</g:form>

我的_searchResultForm.gsp模板,它会显示所有结果(在我的情况下只是搜索字符串)

${results}

我的SearchController将获取搜索字符串并返回相同的字符串:

class SearchController {

    ...

    def search(String s) {
        return s
    }
}

我的问题是,当我在输入表单中写入内容并按下发送按钮后,没有任何反应。没有错误,但它也没有在输入表格下显示输入字符串。

您可能想知道我为什么要尝试使用AJAX:我的目的是实现AJAX搜索。当AJAX部分工作时,将搜索逻辑添加到控制器不应该是一个问题。

1 个答案:

答案 0 :(得分:1)

您应该显示您的searchResultForm模板。但我想你的问题是你不能正确地将模型发送到gsp,你也没有在响应中设置gsp

如果这是你的模板gsp:

<div>${s}</div>

你的行动必须是:

def search(String s) {
        render template: 'searchResultForm', model:[s:s]
    }

通过这种方式,动作生成与给定模型一起发送的html,由jquery渲染到div中。