Ich versuche, das Tag g: formRemote in Grails zu verwenden.
In der Kopfdefinition:
<g:javascript library="prototype" />
Aussicht:
<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>
in meinem Controller
def search = {
.....
render (template:"remoteSearchList", model: [docs:docs])
}
Problem
Was geschieht: Es wird ein Aufruf an den Controller ausgeführt und die gesamte Seite wird durch das Ergebnis des Controllers ersetzt - die Vorlage _remoteSearchList. Ein anderer Ajax-Aufruf auf der Seite funktioniert. Ich habe keine Ahnung, warum sich Grails so verhält.
Aktualisieren
Ich habe das Problem "__" entfernt. Der Kommentar hat diese Frage gelöst.
Aktualisieren
Ich habe das Problem isoliert: JQuery. Ich verwende auch JQuery auf der Site. Wenn es entfernt wird, funktioniert der Ajax-Aufruf ... muss einen Weg finden, damit beide funktionieren.
<g:javascript library="jquery-1.4.4.min" />
<g:javascript library="jquery-ui-1.8.7.custom.min" />
<g:javascript library="jquery-server-extentions" />
Antworten:
1 für die Antwort № 1Oh, es scheint, dass dies auf einen Konflikt mit Prototype (standardmäßig mit Grails gebündelt) und jQuery zurückzuführen ist. Remote-Aufrufe werden von Prototype lib vorgenommen, aber wenn Sie installieren jQuery-Plugin für Grails - es wird Jquery für Remote-Anrufe verwenden.