使用 Grails 的简单 AJAX 示例
Simple AJAX example with Grails
我是 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
里面应该得到搜索字符串和return相同的字符串:
class SearchController {
...
def search(String s) {
return s
}
}
我的问题是,在我将内容写入输入表单并按下发送按钮后,没有任何反应。没有错误,但它也不会在输入表单下显示输入字符串。
你可能想知道为什么我要用 AJAX 来做这个:我的目的是实现一个 AJAX 搜索。当 AJAX 部分工作时,将搜索逻辑添加到控制器应该不是问题。
您应该显示您的 searchResultForm 模板。但我想你的问题是你没有将模型正确发送到 gsp,并且你还没有在响应中设置 gsp
如果这是您的模板 gsp:
<div>${s}</div>
您的操作必须是:
def search(String s) {
render template: 'searchResultForm', model:[s:s]
}
通过这种方式,动作生成 html 以给定模型发送,由 jquery 渲染到 div。
我是 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
里面应该得到搜索字符串和return相同的字符串:
class SearchController {
...
def search(String s) {
return s
}
}
我的问题是,在我将内容写入输入表单并按下发送按钮后,没有任何反应。没有错误,但它也不会在输入表单下显示输入字符串。
你可能想知道为什么我要用 AJAX 来做这个:我的目的是实现一个 AJAX 搜索。当 AJAX 部分工作时,将搜索逻辑添加到控制器应该不是问题。
您应该显示您的 searchResultForm 模板。但我想你的问题是你没有将模型正确发送到 gsp,并且你还没有在响应中设置 gsp
如果这是您的模板 gsp:
<div>${s}</div>
您的操作必须是:
def search(String s) {
render template: 'searchResultForm', model:[s:s]
}
通过这种方式,动作生成 html 以给定模型发送,由 jquery 渲染到 div。