角度cookie出现在编码字符中

时间:2013-06-10 15:57:54

标签: javascript cookies angularjs angular-cookies

给出一些数据:

$scope.devices = [
  { name: 'iPhone 4', os: 'iOS'},
  { name: 'Nexus 7', os: 'Android'},
];

设置cookie的功能:

$scope.saveDeviceChoice = function() {
  $cookieStore.put('savedDevice', $scope.deviceChoice.name);
}

我得到一个价值%22Nexus%207%22的cookie而不是我期望的:Nexus 7.

这就是网络检查员的样子

我真的很困惑 - 似乎%22是一个引用而%20是一个空格,不知何故,这个值被保存为“编码”。谁知道发生了什么?

2 个答案:

答案 0 :(得分:7)

以下是$ cookieStore的官方文档:

  

提供由会话cookie支持的键值(字符串 - 对象)存储。从此存储中放入或检索的对象由angular的toJson / fromJson自动序列化或反序列化。

然后商店会保存该值的网址编码版本。看一下this article,有一节解释了cookie编码。

答案 1 :(得分:4)

$ cookieStore。(get / put)自动运行到/从Json上发送的值,它会附加编码的字符。

如果您只是使用$ cookies,那么您可以自行设置参数

$cookies['savedDevice'] = $scope.deviceChoice.name;

$cookies.savedDevice = $scope.deviceChoice.name;

无论哪种方式,都会像你想要的那样保存这些值。

$ cookieStore的使用很受欢迎,但如果你想使用服务器上的值,它会自带行李。