2014-03-13 95 views
0

我在做一個web應用程序,並且我已經在用戶可以選擇更改應用程序語言的選項中,例如,從en-US到ja,我使用i18next。我所做的是將用戶的首選語言寫入cookie,重新加載頁面,然後閱讀用用戶首選lang創建的cookie。但它的工作原理是因爲它似乎每次重新加載頁面時,我創建的cookie都會被刪除,因此它會恢復爲默認的lang。如何在不刪除cookie的情況下重新加載頁面

問題是有沒有辦法重新加載頁面而不刪除我所做的cookie?

+0

你可能會刪除/某處清空Cookie或不叫它正確...請上傳您是否嘗試過的代碼... – webeno

+0

你設置一個有效期?您能否在'resources'選項卡中檢查瀏覽器的開發人員工具,並查明您的Cookie的到期日期是否設置爲'session',而不是將來的適當日期。 – Jorg

+0

@Jorg是它被設置爲會話。爲什麼?這有什麼問題? –

回答

1

嘗試在Cookie上設置到期日期。下面的代碼將在未來一年內完成。

a = new Date(new Date().getTime() +1000*60*60*24*365); 
document.cookie = 'mycookie=somevalue; expires='+a.toGMTString()+';'; 

請給它一個鏡頭,並再次檢查resources標籤,看它是否已經改變。

Here是關於cookie語法和選項的一些信息。

+0

這個工程!但是我不得不擔心cookie會留在客戶端計算機上一年? –

+0

爲什麼這是一個問題?這意味着除非他們刪除他們的cookies,否則您將能夠閱讀他們的語言偏好。 – Jorg

+0

請關注像這樣的大網站上的資源標籤。 SO設置了具有巨大有效日期的多個cookie – Jorg

0

這可能發生在開發時,一旦你部署應用程序,它可能不會發生。

請將該應用程序部署到本地IIS並測試它是否面臨同樣的問題。

也希望您添加cookie的到期時間。它的一些東西像下面

HttpCookie aCookie = new HttpCookie("SiteLanguage"); 
aCookie.Value = "en-US"; 
aCookie.Expires = DateTime.Now.AddYears(1); 
Response.Cookies.Add(aCookie); 
相關問題