Простой пример 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 работает, не должно возникнуть проблем с добавлением логики поиска в контроллер.


person Peter    schedule 28.11.2015    source источник
comment
github.com/vahidhedayati/grails-liveform-example может помочь   -  person V H    schedule 28.11.2015


Ответы (1)


Вы должны показать свой шаблон searchResultForm. Но я предполагаю, что ваша проблема в том, что вы неправильно отправляете модель в gsp, и вы также не установили gsp в ответе.

Если это ваш шаблон gsp:

<div>${s}</div>

Ваше действие должно быть:

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

Таким образом, действие генерирует html для отправки с данной моделью, которая отображается с помощью jquery в div.

person quindimildev    schedule 28.11.2015