Cookie添加另一个条目而不是替换现有值

时间:2012-07-19 17:06:32

标签: asp.net-mvc-3 cookies session-cookies jquery-cookie

我正在使用流行的jquery cookie插件通过javascript设置会话cookie值,如下所示:

function ChangeLoginUser(sel) {
    var selectedUser = sel.options[sel.selectedIndex].value;
    $.cookie("LoginUser", selectedUser);
    location.reload(true); //refresh
}

用户从站点全局下拉框选项中选择后调用此函数。

  • 更改第1页上的值 - Cookie设置为CookieName = Value1。
  • 转到第2页 - Cookie正确保留
  • 将下拉值更改为value2 - Fiddler现在显示两个相同名称的Cookie,其值如下所示:
CookieName = value2
CookieName = value1

我不明白为什么会这样。我只需要保留一个这个名字的cookie。新值应该取代旧值。

1 个答案:

答案 0 :(得分:1)

确定。看起来问题出在cookie路径上。每个URL都可以有一个具有相同名称的单独cookie。解决方案是将路径设置为域宽,如下所示:

$.cookie("LoginUser", selectedUser, { path: '/' });

或者,如果您需要将其缩小到仅适用于您的应用程序,您可以这样做:

$.cookie("LoginUser", selectedUser, { path: AppPath });

可以在共享布局的开头设置AppPath

<script type="text/javascript">
    var AppPath = '@Url.Content("~/")'
</script>