Foros del Web » Programando para Internet » Javascript »

Persistiendo variables JS con ayuda de PHP y JSON

Estas en el tema de Persistiendo variables JS con ayuda de PHP y JSON en el foro de Javascript en Foros del Web. Antes de empezar, Estimados miembros del equipo de foros del web, queria dejar aqui mi agradecimiento a todos ustedes, por estos magnificos foros, que tantas ...
  #1 (permalink)  
Antiguo 01/09/2008, 10:26
 
Fecha de Ingreso: septiembre-2008
Mensajes: 2
Antigüedad: 15 años, 8 meses
Puntos: 0
Persistiendo variables JS con ayuda de PHP y JSON

Antes de empezar, Estimados miembros del equipo de foros del web, queria dejar aqui mi agradecimiento a todos ustedes, por estos magnificos foros, que tantas veces sirven de ayuda a la comunidad, y a mi ni les cuento. Por ello vaya para ustedes

Ahora bien, lo que les dejo en el post, estimo que puede no ser nuevo, innovador, pero es algo que tuve que pensar, y resolver para una aplicación que estoy desarrollando en PHP.
Resulta ser que necesitaba poder almacenar un array js donde se guardan las selecciones que realiza un usuario en una matriz de seleccion hecha con javascript para poder soportar el estado "back".

Investigando, tomé JSON como la mejor alternativa, y luego de casi 24hs de no encontrar la vuelta, lo pude resolver.

Pasos a seguir:

1) Es totalmente fundamental tener el script de json.js:
http://www.devpro.it/JSON/files/JSON-js.html

2) En la pagina donde se crea la variable (puede ser del tipo string, array, o numero) JS y se envia en un formulario, al momento del submit, proceder a codificarla usando el metodo encode de JSON, de la siguiente manera (La variable 'miArray' es la que debemos enviar en el form):

arrayapersistir = "(1,2,3,4)";

var miArray = JSON.encode(arrayapersistir);

3) A continuacion, en la pagina siguiente (.php) debemos recuperar la variable y registrarla como variable de sesión o global segun prefieran. (por cuestiones de prolijidad, recomiendo que sea de sesion).

<?php

$_SESSION['var_js'] = $_POST['miArray'];

?>

4) Cuando volvemos a la pagina debemos reconocer con codigo si nuestra variable global existe. Si existe, entonces, sabremos que el usuario esta regresando.

5) Si existe, debemos llenar la variable vacia que se habra llenado en js, correspondiente a nuestro array (creado nuevamente sin elementos, dado que js no persiste las variables), con la información que almacenamos en la variable de sesion. de la siguiente manera:

<script type="text/javascript" language="javascript">

var arrayJS = JSON.encode(<?php echo $_SESSION['var_js']; ?>);

//Inmediatamente a continuación

var arrayJS_d = JSON.decode(arrayJS);

/*
* Recuerden igualar la variable original a arrayJS_d, de este modo, tendremos la * variable deseada, en el estado en el que habia quedado antes de que
* avanzaramos, con toda la informacion necesaria.
*/


</script>

Eso es todo.

IMPORTANTE: Notaran, que de vuelta en la pagina inicial, codificamos nuevamente, y decodificamos.
La razon de la segunda codificacion, es que en el pasaje de la variable desde php a js, al parecer, el string es evaluado, y todos los caracteres de escape se pierden. Por ello la segunda encodificacion soluciona esta situación. Posteriormente decodificamos y reestablecemos la variable a su estado original.

NOTA: Disculpen las desprolijidades, imprecisiones o demas que pudiere haber en este post. Pero no queria dejar de enviar mi aporte a modo de devolver algo de tantas soluciones que he encontrado por aqui. Si tuvieren algun incoveniente, o pudieran ver la forma de hacer esto mas eficiente, todas las criticas seran muy bienvenidas.

Slds ;)

Guille
</script>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:55.