2

grailsでタグg:formRemoteを使用しようとしています。

頭の定義では:

 <g:javascript library="prototype" />

見る:

<g:formRemote name="something" update="remoteDocsBlock"
                      url="[ controller: 'document',
                       action: 'search']">

      search: <input name="searchstring" type="text"></input>

      <g:actionSubmit value="Search" action="search" />

      <g:render template="/document/remoteSearchList" model="[docs:docs]" />

</g:formRemote>

<div id="remoteDocsBlock">this div is updated with the result...</div>

私のコントローラーで

def search = {
.....
render (template:'remoteSearchList', model: [docs:docs])

}

問題

何が起こるか:コントローラーが呼び出され、ページ全体がコントローラーの結果(テンプレート_remoteSearchList)に置き換えられます。ページ上の異なるajax呼び出しは機能します。なぜグライルがそのように振る舞うのか私にはわかりません。

アップデート

「__」の問題を削除しました。コメントはこの質問を解決しました。

アップデート

問題を切り分けました:JQuery。このサイトでもJQueryを使用しています。それが削除された場合、ajax呼び出しは機能します...両方を機能させる方法を見つける必要があります。

<g:javascript library="jquery-1.4.4.min" />
<g:javascript library="jquery-ui-1.8.7.custom.min" />
<g:javascript library="jquery-server-extentions" />
4

1 に答える 1

1

ああ、それはプロトタイプ(デフォルトでGrailsにバンドルされている)とjQueryとの競合が原因のようです。リモート呼び出しはPrototypelibによって行われますが、grails用のjQueryプラグインをインストールすると、リモート呼び出し用のjqueryの使用が開始されます。

于 2011-12-19T08:28:31.467 に答える