0

我很陌生Grails,我正在尝试了解 AJAX 在 Grails 中的工作原理。为此,我尝试从此处修改乘法 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}

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

class SearchController {

    ...

    def search(String s) {
        return s
    }
}

我的问题是,在我在输入表单中写入内容并按下发送按钮后,什么也没有发生。没有错误,但它也不会在输入表单下显示输入字符串。

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

4

1 回答 1

1

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

如果这是您的模板 gsp:

<div>${s}</div>

你的行动必须是:

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

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

于 2015-11-28T19:47:06.163 回答