我对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部分工作时,将搜索逻辑添加到控制器不应该是一个问题。
答案 0 :(得分:1)
您应该显示您的searchResultForm模板。但我想你的问题是你不能正确地将模型发送到gsp,你也没有在响应中设置gsp
如果这是你的模板gsp:
<div>${s}</div>
你的行动必须是:
def search(String s) {
render template: 'searchResultForm', model:[s:s]
}
通过这种方式,动作生成与给定模型一起发送的html,由jquery渲染到div中。