0

私はかなり新しく、GrailsAJAXが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検索文字列を取得し、同じ文字列を返すMy :

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 に答える