【问题标题】:Response.redirect kills local storage?Response.redirect 杀死本地存储?
【发布时间】:2016-03-11 18:23:57
【问题描述】:

我正在尝试在 asp 中使用 HTML5 本地存储。我可以对存储进行读写,但是如果我执行response.redirect,整个本地存储会被清除吗?

<script type='text/javascript'>

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

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

这可以很好地保存,我可以使用开发者工具看到保存在本地存储中的变量。

但是如果在那之后我添加

 response.redirect ("index.asp")

然后清理整个本地存储。我怎样才能坚持下去?

【问题讨论】:

  • 那么您是说您重定向到同一域上的页面并且数据已经消失?
  • 有点奇怪......据说localStorage即使在离开网站或关闭浏览器后也应该保留。也许您正在重定向到正在清理 localStoreage 的页面?
  • 这是正确的 - 它只是在下一页上消失了。例如,如果我只有一个 asp 页面,上面的代码没有最后一行(response.redirect),一切正常,我可以读取本地存储,它仍然存在。但是,如果我添加最后一行并尝试在下一页读取 localstorage,它是空的。即使 index.asp 是一个只读取本地存储的空白页面,它也会显示为空。本地存储也没有被清理。我尝试将 localstorage 更改为 cookie,一切正常,但它不适用于 localstorage。看不懂。。。
  • 我知道这是一个 hack,但尝试在重定向之前添加一个短暂的延迟
  • 测试过 Response.Redirect 杀死本地存储

标签: html persistence local-storage


【解决方案1】:

问题是(正如 Neil 建议的那样)localStorage 需要几毫秒才能执行,并且您在该过程完成之前就进行了重定向。在 localStorage 中设置某些内容后,我遇到了与 javascript 重定向类似的问题。 您正在使用 ASP(如果没有看到更多代码,我不能肯定地说),但是如果我没记错的话,ASP 是在服务器上解析的,所以您在 any javascript 执行之前重定向。

尝试改用这个:

<script type='text/javascript'>

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

localStorage["remember"] = "1";

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

【讨论】:

  • 正好遇到了这个问题。难以置信。为什么连 JS 都会异步执行对 localStorage 的赋值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多