Простой пример AJAX с Grails
Я довольно новичок в 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}
мой SearchController
который должен получить строку поиска и вернуть ту же строку:
class SearchController {
...
def search(String s) {
return s
}
}
Моя проблема в том, что после того, как я что-то записал в форму ввода и нажал кнопку отправки, ничего не происходит. Нет ошибки, но она также не отображает строку ввода под формой ввода.
Вы можете удивиться, почему я пытаюсь сделать это с AJAX: моя цель - реализовать поиск AJAX. Когда часть AJAX работает, не должно быть проблемой добавить логику поиска в контроллер.
1 ответ
Вы должны показать свой шаблон searchResultForm. Но я полагаю, ваша проблема в том, что вы не правильно отправили модель в gsp, и вы также не задали gsp в ответе
Если это ваш шаблон GSP:
<div>${s}</div>
Ваше действие должно быть:
def search(String s) {
render template: 'searchResultForm', model:[s:s]
}
Таким образом, действие генерирует html для отправки с данной моделью, которая отображается с помощью jquery в div.