2010-02-13 16 views
34

¿Cómo crear sesión en JavaScript?¿Cómo crear una sesión usando JavaScript?

Intento de esta manera:

<script type="text/javascript" > 
{ 
Session["controlID"] ="This is my session"; 
} 
</script> 

¿Por qué en busca de sesión?

Realizo una solicitud de XML usando AJAX. Respuesta XML Quiero almacenar en sesión y esta sesión quiero pasar a la página del servidor (.asp). Me refiero a escribir algo como:

<% response.write session("MySession")%> 
+2

Eche un vistazo a http://stackoverflow.com/questions/1981673 – Gumbo

+2

¿Está pensando en una sesión del lado del servidor, o simplemente una variable de JavaScript llamada Session? – Yoni

Respuesta

0

Puede utilizar el name attr:

<script type="text/javascript" > 
{ 
window.name ="This is my session"; 
} 
</script> 

Usted todavía tiene que desarrollar por sí mismo el formato a utilizar, o utilizar un envoltorio de una biblioteca ya existente (mootools, Dojo, etc.)
También puede usar cookies, pero son más pesadas en el rendimiento, ya que van y vienen del cliente al servidor, y son específicas de un dominio.

+0

por qué estoy buscando una sesión, solicito xml usando la respuesta ajax .. xml. Quiero almacenar en sesión y esta sesión la paso a la página del servidor (.asp). eso significa, si escribo <% response.write session ("MySession")%> – Alex

9

Creo que entendió mal el concepto de sesión, la sesión es un lado del servidor por usuario-almacén de datos, que le permite guardar los datos de usuario en el servidor.

por lo tanto, tiene 2 opciones, recurrir a las cookies, que le dará la ilusión de la sesión (pero no exactamente lo mismo), puede acceder a las cookies de forma muy simple por document.cookie.

pero, si se desea que el servidor sea consciente de la sesión, es necesario utilizar algún tipo de solicitud del servidor, probablemente, la mejor manera es utilizar AJAX para hacer esto.

Le recomendaría volver a leer la definición de sesiones.

+1

por qué busco una sesión, hago una solicitud de xml usando ajax .. xml respuesta que quiero almacenar en sesión y esta sesión me wand para pasar a la página del servidor (.asp). eso significa que si escribo <% response.write session ("MySession")%> – Alex

+0

La sesión resiste en el servidor, no puede pasar "session" al servidor, a menos que signifique sessionID, pero aún necesita iniciar la sesión en el servidor, lo que debe significar son cookies, simplemente puede almacenar esos datos en una cookie y volver a enviarlos desde allí, la sesión NO es el término correcto. – MindFold

+0

De acuerdo con esto -> http://www.thefreedictionary.com/session, puede interpretar la palabra sesión como algo que también puede usarse en el lado del cliente. No limitemos aquí nuestras opciones. En mi cabeza, una sesión (ya sea una sesión de DB, una transacción, una sesión web) es una serie de operaciones que pertenecen junto con un principio y un final. –

50

Puede almacenar y leer información sobre cadenas en una cookie.

Si se trata de una identificación de sesión procedente del servidor, el servidor puede generar esta cookie. Y cuando se envía otra solicitud al servidor, la cookie también aparecerá. Sin tener que hacer nada en el navegador.

Sin embargo, si es javascript que crea la Id. De sesión. Puede crear una cookie con Javascript, con una función como:

function writeCookie(name,value,days) { 
    var date, expires; 
    if (days) { 
     date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     expires = "; expires=" + date.toGMTString(); 
      }else{ 
     expires = ""; 
    } 
    document.cookie = name + "=" + value + expires + "; path=/"; 
} 

Luego, en cada página que necesita este identificador de sesión se puede leer la cookie, con una función como:

function readCookie(name) { 
    var i, c, ca, nameEQ = name + "="; 
    ca = document.cookie.split(';'); 
    for(i=0;i < ca.length;i++) { 
     c = ca[i]; 
     while (c.charAt(0)==' ') { 
      c = c.substring(1,c.length); 
     } 
     if (c.indexOf(nameEQ) == 0) { 
      return c.substring(nameEQ.length,c.length); 
     } 
    } 
    return ''; 
} 

La función de lectura trabaje desde cualquier página o pestaña del mismo dominio que lo haya escrito, ya sea si la cookie se creó desde la página en javascript o desde el servidor.

para almacenar el ID:

var sId = 's234543245'; 
writeCookie('sessionId', sId, 3); 

Para leer el ID:

var sId = readCookie('sessionId') 
+0

Funciona muy bien :) Si desea administrar y almacenar datos utilizando js, ​​siga esto es muy útil. – Chiragit007

+0

Creo que en el primer bloque, debería ser como, 'document.cookie = name +" = "+ value +"; expires = "+ expires +"; path =/";' – user3526

+0

@ user3526, la variable expira contiene ya la cadena '; expires =', por lo que no es necesario volver a agregarla. Cheers, – Mic

1
function writeCookie(name,value,days) { 
    var date, expires; 
    if (days) { 
     date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     expires = "; expires=" + date.toGMTString(); 
      }else{ 
     expires = ""; 
    } 
    document.cookie = name + "=" + value + expires + "; path=/"; 
} 
+0

una cookie de sesión no tiene una fecha de caducidad http://en.wikipedia.org/w/index.php?title=HTTP_cookie§ion=3#Session_cookie –

11

Asumo que está utilizando ASP.NET MVC (C#), si no, esta respuesta es no en tu problema

¿Es imposible asignar valores de sesión directamente a través de javascript? No, hay una manera de hacer eso.

mirar de nuevo su código:

<script type="text/javascript" > 
{ 
Session["controlID"] ="This is my session"; 
} 
</script> 

Un pequeño cambio poco:

<script type="text/javascript" > 
{ 
    <%Session["controlID"] = "This is my session";%> 
} 
</script> 

La sesión de "ID del control" se ha creado, pero ¿qué pasa con el valor de la sesión? ¿Es persistente o puede cambiarse mediante javascript?

Let cambiar un poco más: se crea

<script type="text/javascript" > 
{ 
    var strTest = "This is my session"; 
    <%Session["controlID"] = "'+ strTest +'";%> 
} 
</script> 

La sesión, pero el valor dentro de la sesión será " '+ strTest +'", pero no "Este es mi sesión". Si intenta escribir la variable directamente en el código del servidor como:

<%Session["controlID"] = strTest;%> 

A continuación, se producirá un error en la página que "No existe ningún parámetro strTest en el contexto actual ...". Hasta ahora, todavía parece imposible asignar valores de sesión directamente a través de javascript.

Ahora paso a una nueva forma. Usando WebMethod en el código detrás para hacer eso. Revise nuevamente su código con un pequeño cambio:

<script type="text/javascript" > 
{ 
var strTest = "This is my session"; 
PageMethods.CreateSessionViaJavascript(strTest); 
} 
</script> 

En la página de código subyacente. Creo un WebMethod:

[System.Web.Services.WebMethod] 
public static string CreateSessionViaJavascript(string strTest) 
{ 
    Page objp = new Page(); 
    objp.Session["controlID"] = strTest; 
    return strTest; 
} 

Después de llamar al método web para crear una sesión desde javascript. La sesión "controlID" tendrá el valor "Esta es mi sesión".

Si utiliza el modo que he explicado, agregue este bloque de código dentro de la etiqueta de formulario de su página aspx. El código ayuda a habilitar los métodos de página.

<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager> 

Fuente: JavaScript - How to Set values to Session in Javascript

Codding feliz, Tri

0

Puede almacenar y leer información de la cadena en una cookie.

Si se trata de una identificación de sesión procedente del servidor, el servidor puede generar esta cookie. Y cuando se envía otra solicitud al servidor, la cookie también aparecerá. Sin tener que hacer nada en el navegador.

Sin embargo, si es javascript que crea la Id. De sesión. Puede crear una cookie con javascript, con una función como:

La función de lectura funciona desde cualquier página o pestaña del mismo dominio que la haya escrito, ya sea que la haya creado desde la página en javascript o desde el servidor .

8

Puede usar el almacenamiento local.

almacenamiento local es lo mismo que la sesión. los datos se eliminarán cuando cierre el navegador.

<script> 
localStorage.setItem('lastname','Smith'); 

alert(localStorage.getItem('lastname')); 
</script> 
+2

no, necesita usar almacenamiento de sesión, almacenamiento de sesión almacena por sesión localstorage no tiene vencimiento – Naveen

1

Puede intentar jstorage Javascript plugin, es una manera elegante para mantener las sesiones cheque esta http://www.jstorage.info/

incluyen el guión jStorage.js en su html

<script src="jStorage.js"></script> 

Luego, en su lugar el javascript sessiontoken en el una llave como esta

$.jStorage.set("YOUR_KEY",session_id); 

Donde "YOUR_KEY" es la clave mediante el cual se puede acc ess que SESSION_ID, así:

var id = $.jStorage.get("YOUR_KEY"); 
+0

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – Reeno

+0

@Reeno La respuesta se ha mejorado, los comentarios/supresión de votos ya no son relevantes. –

-1

Usar almacenamiento local HTML5. puede almacenar y usar los datos en cualquier momento que lo desee.

<script> 
    // Store 
    localStorage.setItem("lastname", "Smith"); 

    // Retrieve 
    var data = localStorage.getItem("lastname"); 

</script> 
+0

sessionStorage y localStorage son cosas diferentes. – omeralper

0
<script type="text/javascript"> 
function myfunction() 
{ 
    var IDSes= "10200"; 
    '<%Session["IDDiv"] = "' + $(this).attr('id') + '"; %>' 
    '<%Session["IDSes"] = "' + IDSes+ '"; %>'; 
    alert('<%=Session["IDSes"] %>'); 
} 
</script> 

link

+0

esto no es una buena práctica, es del lado del servidor/tiempo de ejecución y se ejecutará solo en la página cargando la mejor manera es usar sessionStorage como se menciona a continuación –

0

Aquí es lo que hice y funcionó, crea una sesión en PHP y utiliza xmlhhtprequest para comprobar si la sesión se establece cada vez que se cargue una página HTML y que trabajó para Córdoba.

Cuestiones relacionadas