2011-08-09 20 views
6

Mam pytanie przy użyciu wartości zmiennych Grails w kodzie javascript w pliku GSP.Grails używający Grails var w witrynie GSP wewnątrz javascript

Na przykład: Mam wartość sesji session.getAttribute ("selectedValue") i chcę użyć tej wartości wewnątrz części kodu javascript.

Moje rozwiązanie jest teraz (wewnątrz GSP):

<% 
    def js = new String("<script type=\"text/javascript\">") 
    js += "var jsSelectedValue = " + session.getAttribute("selectedValue") + ";" 
    js += "</script>" 
    out << js 
%> 

a potem mam javascript blok wewnątrz mojego GSP z jQuery rzeczy i tak dalej, nie muszę tej wartości.

Czy istnieje inny sposób na dostęp do zmiennych grails w czystym kodzie javascript?

I drugie pytanie, dokładnie odwrotnie. Wybieram na przykład w polu rozwijanym i kliknij "zapisz", a następnie chcę zapisać wartość $ ("# select-box"). Val() wewnątrz zmiennej sesji z JS-part.

Z góry dziękuję bardzo za pomoc.

Cheers,

Marco

+0

Nie odnosisz się do żadnych zmiennych grails w powyższym kodzie. To, co faktycznie robisz, polega na generowaniu kodu javascript z szablonu. Ten szablon może uzyskać dostęp do sesji, ponieważ jest przetwarzany po stronie serwera. –

Odpowiedz

12

Dlaczego nie używać tagu GSP JavaScript javascript? Rozwiązanie może wyglądać tak:

<g:javascript> 
    var jsSelectedValue = "${session.selectedValue}"; 
</g:javascript> 
+2

Nie jestem pewien, czy ktokolwiek inny utknie w ten sam sposób co ja, ale upewnij się, że deklaracja var jest w oddzielnym tagu niż jakikolwiek skrypt z parametrem źródłowym. – RasTheDestroyer

1

Rozwiązanie pierwszego problemu może być następująca:

UPDATE: zmian zgodnie z @ Medrod w roztworze:

<script type="text/javascript"> 
var jsSelectedValue = "${session.selectedValue}"; 
</script> 

a dla drugie pytanie:
Wyślij wybraną wartość do serwera i ustaw zmienną sesji.

+0

Dzięki Medrod i Zedwal! Dla odpowiedzi na drugie pytanie, jeśli wyślę wszystko na serwer (np. JSON POST), każdy skryptowy kiddie może przygotować lokalne wartości formularzy i przygotowany ajax post i manipulte ... prawda ?! – grailsInvas0r