Grails RemoteFunction-Parametersyntax

8

Ich versuche, einige Parameter an eine remoteFunction in grails zu übergeben, aber ich habe Schwierigkeiten, sie richtig zu formatieren

Ich möchte den Wert eines Datenelements auf der Seite plus den Wert des Textfelds, das ich gerade ausgeklappt habe, übergeben, also habe ich in meinem Onblur etwas in der Art von:

%Vor%

Dies wird nicht kompiliert - auch keine Permutationen, die ich mit einer unterschiedlichen Anzahl von einfachen Anführungszeichen und Escape-Zeichen erstellen kann.

Ich denke, was mich wirklich stolpert ist, dass ich wirklich nicht verstehe, was ich hier zu erschaffen versuche. Ist es wie JSP-Code zu verwenden, um JavaScript zu erstellen, das später ausgeführt wird? Wann wird dieser Ausdruck ausgewertet - ist es zu der Zeit, zu der die Seite kompiliert wird - oder ist a = es zu der Zeit, die oblur aufgerufen wird?

Jede Hilfe wird sehr geschätzt.

    
DaveH 10.02.2010, 20:07
quelle

5 Antworten

9

Offenbar haben Sie den serverseitigen Code mit dem clientseitigen Code vermischt.

Der Grails-Code wird ausgewertet, wenn die Seite "erstellt" wird, um sie an den Client-Browser zu senden.

Der Javascript-Code wird ausgewertet, sobald die Seite an den Browser übergeben wurde.

In diesem Sinne schauen wir uns Ihre Onblur-Aufgabe an:

%Vor%

Da der Aufruf $ {remoteFunction ...} ein Grails-Tag ist, wird er auf dem Server ausgewertet, generiert eine feste Zeichenfolge und wird dann an den Client gesendet. Alles innerhalb des Aufrufs muss gültiger Groovy-Code sein.

Sehen Sie sich die Params-Map an, Sie haben Javascript im Wert des Nennwerts in Groovy-Code hinzugefügt:

%Vor%

Dann versuchst du einen Wert von Groovy hinzuzufügen

%Vor%

dann wieder ein wenig Javascript

%Vor%

Der Groovy-Compiler wird versuchen, das Javascript als Groovy-Code zu bewerten und zu scheitern.

Wenn Sie auf clientseitige Parameter in Javascript zugreifen müssen, müssen Sie das Javascript selbst bearbeiten (und nicht das remoteFunction-Tag verwenden), um beispielsweise den Remote-Aufruf zu behandeln:

%Vor%

Sie müssen die Remote-Antwort auch selbst handhaben, indem Sie Javascript verwenden, um die "pack" -Elemente zu aktualisieren. Sie können immer sehen, was der remoteFunction-Aufruf generiert, kopieren Sie es in die Seite und bearbeiten Sie es, um zu tun, was Sie wollen.

HTH

    
Dave Bower 10.02.2010, 22:53
quelle
6

Oder Sie können die Parameter getrennt durch "& amp;" wie

params:'\'param1=\'+this.value+\'&booleanParam2=true\''

    
Photon 04.11.2010 19:16
quelle
5

Sie können tatsächlich das Remote-Funktions-Tag verwenden, Sie müssen nur die Parameter in eine Javascript-Objekt-Zeichenfolge schreiben, das funktioniert also ziemlich gut in Sachen, mit denen ich arbeite.

%Vor%     
rnovak1988 24.04.2013 20:08
quelle
2
%Vor%     
quelle
0

Ich hatte das gleiche Problem, aber alle obigen Antworten haben nicht geholfen, da der Wert, den ich erhalten möchte, der ausgewählte Wert aus der Auswahl-Dropdownliste sowie der obj-Instanz in der Tabelle ist, die iteriert wurde. unten war die Lösung.

%Vor%     
user742102 28.11.2014 08:05
quelle

Tags und Links