Foros del Web » Programando para Internet » Javascript »

Sesiones en javascript

Estas en el tema de Sesiones en javascript en el foro de Javascript en Foros del Web. Hola a todos! Tengo una duda más... mi problema ahora es que tengo en una página php el código para mostrar una serie de checkbox ...
  #1 (permalink)  
Antiguo 03/08/2008, 09:21
 
Fecha de Ingreso: julio-2008
Mensajes: 85
Antigüedad: 15 años, 9 meses
Puntos: 2
Sesiones en javascript

Hola a todos!
Tengo una duda más... mi problema ahora es que tengo en una página php el código para mostrar una serie de checkbox asociados a unos ficheros. Controlo con javascript si se marcan o no los checkbox, y almaceno los checkbox que se marcan en un vector de js.

Lo que quiero es pasar lo que contiene ese vector a una variable de sesion, para que al navegar por otras páginas pueda mantener la información de los chakboxs pulsados.

Se pueden usar sesiones en javascript? Lo he intentado y no se guarda nada en las variables de sesion...

O existe otra forma mejor para hacer lo que quiero??

Gracias
  #2 (permalink)  
Antiguo 03/08/2008, 09:30
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Sesiones en javascript

No existen las sesiones en javascript, aunque es posible simularlas, guardando variables en la propiedad name del objeto window (con esto, mientras no se modifique esta propiedad usando enlaces o formularios con un atributo target que sobreescriba a window.name, logramos que las variables almacenadas allí persistan entre diferentes páginas). Un ejemplo sencillo de esto, en este enlace: http://www.disegnocentell.com.ar/new...los.php?id=178
No obstante, quizá te convenga guardar los datos en una sesión real del servidor, invocando en background a algún archivo del lado del servidor, cosa que podés hacer con un iframe oculto o con alguna otra técnica AJAX como XMLHttpRequest o inclusión DOM.
  #3 (permalink)  
Antiguo 03/08/2008, 12:04
 
Fecha de Ingreso: julio-2008
Mensajes: 85
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Sesiones en javascript

El problema que tengo al usar window.name, es que la página donde quiero usar los checkbox seleccionados es una ventana pop-up, por lo que cambia el nombre y no guarda los datos.

Lo de invocar el backgroud no sé lo que es :( leeré cosas sobre ello a ver si me sirve.

Mi principal problema es que los checkbox los tengo que tratar con js porque los creo mediante un bucle y todos tienen el mismo nombre, pero el valor cambia:

nombre valor
casa casa_1
casa casa_2
...

De esta forma añado el identificador que le corresponde a cada archivo en la base de datos (para que esté relacionado cada checkbox con su archivo).

Así que les pongo al final onclick=funcion() y así con js veo los que están marcados en cada momento y los añado a un vector, en el vector solamente guardo el identificador. Y esto es lo que quiero tener siempre, en todas las páginas que visite.

Lo explico más por si veis algo que pueda cambiar y me facilite el trabajo o a alguien se le ocurre cómo pasar la información desde js a otras páginas que uso.

Otro problema es que la página es un buscador, por lo que cada vez que le doy a buscar, muestra nuevos elementos con sus checkbox asociados, pero comienza a almacenar los checkboz marcados desde 0, es decir, que si en la primera búsqueda me salen los checkbos casa_3 y casa_5 y marco el 5, el vector contendrá en numero cinco, pero si quiero añadir más, y vuelvo a buscar, el vector estará vacío..

Espero haberme explicado, se que es complicado de entender...

Muchas gracias
  #4 (permalink)  
Antiguo 03/08/2008, 19:16
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Sesiones en javascript

Cita:
El problema que tengo al usar window.name, es que la página donde quiero usar los checkbox seleccionados es una ventana pop-up, por lo que cambia el nombre y no guarda los datos.
En realidad no importa eso. Un ejemplo:
Página base:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>test</title>
<
script type="text/javascript">
function 
enviar(f){
    var 
obj='{';
    var 
v;
    for(var 
i=0;i<f.elements.length;i++){
        if(
f.elements[i].type=='checkbox' && f.elements[i].checked){
            
obj+='"'+f.elements[i].name+'"'+':'+'"'+f.elements[i].value+'",';
        }
    }
    if(
obj.length>1)
        
obj=obj.substr(0,obj.length-1);
    
obj+='}';
    
v=window.open('dos.php','','width=500,height=500');
    
v.name=window.name=obj;
    return 
true;
}
</script>
</head>

<body>
<form id="form1" name="form1" method="post" action="" onsubmit="return enviar(this)">
  <input name="uno" type="checkbox" id="uno" value="1" />
  <input name="dos" type="checkbox" id="dos" value="2" />
  <input name="tres" type="checkbox" id="tres" value="3" />
  <input type="submit" name="Submit" value="Enviar" />
</form>
</body>
</html> 
Popup (en el ejemplo, dos.php):
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>test</title>
<
script>
function 
mostrarValores(){
    var 
cad='';
    if(
window.name!=''){
        var 
obj=new Function("return "+window.name)();
        for(var 
i in obj)
            
cad+=i+'--->'+obj[i]+'   ';
        
    }
    
document.getElementsByTagName('body')[0].appendChild(document.createTextNode(cad));
}
window.onload=mostrarValores;
</script>
</head>

<body>
</body>
</html> 
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 21:11.