2012-09-19 75 views
5

Estoy tratando de trabajar con el almacenamiento local HTML5 en asp. Puedo leer y escribir en el almacenamiento, pero si hago un response.redirect, ¿se borrará todo el almacenamiento local?Response.redirect mata el almacenamiento local?

<script type='text/javascript'> 

localStorage["email"] = "<%=email%>"; 

localStorage["remember"] = "1"; 
</script> 

Esto funciona bien para guardar y puedo ver la variable guardada en el almacenamiento local usando Herramientas de desarrollador.

Sin embargo, si después de eso añado

response.redirect ("index.asp") 

entonces todo el almacenamiento local se limpia. ¿Cómo puedo hacer para persistir?

+0

Así que estás diciendo que redirige a una página en el mismo dominio y los datos han desaparecido? – Neil

+0

Un poco extraño ... supuestamente local. El almacenamiento debe permanecer incluso después de abandonar el sitio o cerrar el navegador. ¿Tal vez está redireccionando a una página donde se está limpiando localStoreage? – Bardo

+0

Eso es correcto, simplemente desaparece en la página siguiente. Por ejemplo, si todo lo que tengo es una página asp con el código anterior sin la última línea (response.redirect), todo funciona y puedo leer el almacén local y todavía está allí. Sin embargo, si agrego la última línea e intento leer localstorage en la página siguiente, está vacía. Incluso si index.asp es una página en blanco que acaba de leer el almacenamiento local, sale vacía. Además, el almacenamiento local no se está limpiando. Intenté cambiar el almacenamiento de locals a las cookies y todo funciona bien, pero no funciona con localstorage. No puedo entenderlo ... – user1480192

Respuesta

3

El problema es (como sugiere Neil) que localStorage tarda unos milisegundos en ejecutarse y que está redirigiendo antes de que el proceso se complete. Tuve un problema similar con un redireccionamiento de JavaScript después de configurar algo en localStorage. Está usando ASP (y no puedo decirlo con seguridad sin ver más código) pero si recuerdo correctamente, ASP se analiza en el Servidor, por lo que está redirigiendo antes de , se ejecuta cualquier javascript.

Trate de usar esto en su lugar:

<script type='text/javascript'> 

localStorage["email"] = "<%=email%>"; 

localStorage["remember"] = "1"; 

setTimeout(function(){ 
    location.href = "index.asp"; 
},100) 

+0

Tiene exactamente este problema. Increíblemente ¿Por qué incluso JS ejecuta la asignación a localStorage de forma asíncrona? – arrowd

Cuestiones relacionadas