2011-08-09 17 views
6

Tengo una pregunta usando valores de variables de grails en código JavaScript en un archivo GSP.Grails usando grails var en GSP Sitio dentro de javascript

Por ejemplo: Tengo un valor de sesión session.getAttribute ("selectedValue") y deseo utilizar este valor dentro de la parte del código javascript.

Mi solución es ahora (dentro de un SGP):

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

y luego tengo Javascript bloque dentro de mi GSP con jQuery materia y así sucesivamente, no necesitaré este valor.

¿Hay alguna otra forma de tener acceso a las variables de grails dentro del código javascript puro?

Y la segunda pregunta, exactamente la otra manera. Selecciono, por ejemplo, en un cuadro desplegable y hago clic en "guardar" y luego quiero almacenar el valor $ ("# select-box"). Val() dentro de una variable de sesión de JS-part.

Muchas gracias de antemano por su ayuda.

Cheers,

Marco

+0

En realidad, no hace referencia a ninguna variable de grails en el código anterior. Lo que realmente está haciendo es usar la generación de código JavaScript desde una plantilla. Esta plantilla puede acceder a la sesión porque se procesa en el servidor. –

Respuesta

12

¿Por qué no utilizar la etiqueta GSP de JavaScript? Una solución puede verse así:

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

No estoy seguro si alguien más se quedará atrapado de la misma manera que yo, pero asegúrese de que la declaración var esté en una etiqueta separada que cualquier script con un parámetro fuente. – RasTheDestroyer

1

La solución a su primer problema podría ser la siguiente:

ACTUALIZACIÓN: modificaciones de acuerdo a @ solución de Medrod:

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

Y para segunda pregunta:
Enviar el valor seleccionado al servidor y establecer la variable de sesión.

+0

¡Gracias a Medrod y Zedwal! Para la respuesta a la segunda pregunta, si envío todo al servidor (por ejemplo, JSON POST), cada script kiddie puede preparar algunos valores de forma locales y preparar ajax post y manipular ... ¿no? – grailsInvas0r