2012-09-19 39 views
5

我正在嘗試與HTML5本地存儲在asp中。我可以讀取和寫入存儲,但如果我做了一個response.redirect整個本地存儲被抹去了?Response.redirect殺死本地存儲?

<script type='text/javascript'> 

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

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

這適用於保存,我可以看到使用開發工具保存在本地存儲中的變量。

但是,如果在那之後我添加

response.redirect ("index.asp") 

那麼整個本地存儲進行清潔。我怎樣才能堅持下去?

+0

所以你是說你重定向到一個頁面上相同的域和數據dissapeared? – Neil

+0

有點怪異......即使在離開網站或關閉瀏覽器後,localStorage仍應保持不變。也許你正在重定向到localStoreage正在清理的頁面? – Bardo

+0

這是正確的 - 它只是消失在下一頁。例如,如果我擁有的是帶有上面代碼而沒有最後一行(response.redirect)的asp頁面,那麼一切正常,我可以讀取localstorage並且它仍然存在。但是,如果我添加最後一行並嘗試讀取下一頁上的localstorage,它是空的。即使index.asp是隻讀本地存儲的空白頁,它也是空白的。此外,本地存儲未被清理。我嘗試將localstorage更改爲cookie,並且一切正常,但它不會與localstorage配合使用。我無法理解它... – user1480192

回答

3

問題是(正如尼爾所暗示的),localStorage需要幾毫秒才能執行,並且您在進程完成之前重定向。在localStorage中設置某些內容後,我遇到了類似的JavaScript重定向問題。 您正在使用ASP(我不能確定沒有看到更多的代碼),但是如果我沒有記錯的話,ASP會在服務器上解析,因此您在執行任何 JavaScript之前都會重定向。

嘗試使用這個:

<script type='text/javascript'> 

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

localStorage["remember"] = "1"; 

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

+0

得到了這個問題。 Unbeliavably。爲什麼即使JS以異步方式執行對localStorage的分配? – arrowd