2014-03-13 59 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); 
相关问题