1

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

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

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

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

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

4

1 回答 1

1

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

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

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

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

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

<script type="text/javascript">
    var AppPath = '@Url.Content("~/")'
</script>
于 2012-07-19T17:46:26.577 回答