我有一个应用程序,其中我有一个数组(configurationsArray)的每个项目(配置)的复选框。我想要实现的是在选中复选框时将配置添加到cookie存储
这是我的代码
$scope.addProjectConfig = function(configuration, projectName) {
var configs = $cookieStore.get('projectsToCompare');
if(!configs) {
$cookieStore.put('projectsToCompare', new Array());
configs = $cookieStore.get('projectsToCompare');
}
if(configuration.addedToCompare) {
var configObject = {projectName: projectName, configuration: configuration};
configs.push(configObject);
$cookieStore.put('projectsToCompare', configs);
}
var configs1 = $cookieStore.get('projectsToCompare');
};
如果你看到最后我试着把我推入cookieStore的东西搞定,它运行正常。
但是当选中另一个复选框并再次执行该方法时,我看到开头返回的值有一个空数组。我在这做错了什么?任何指针都非常感激。
答案 0 :(得分:1)
您观察到的行为的一个可能原因是,您的Cookie大小超过了浏览器的Cookie大小限制。
摘自第二个链接
根据RFC 2109,网络cookie不应受用户限制 代理商。但是浏览器或用户代理的最低功能应该是 每个cookie至少4096字节。此限制适用于 name = value仅限cookie的一部分。
这意味着如果你正在写一个cookie并且cookie少于 4096字节,然后每个浏览器和用户代理都支持它 符合RFC。
各种浏览器的Cookie大小限制
- Internet Explorer 8允许最多4095字节的Cookie
- Chrome 9允许最多4096字节的Cookie
- Opera 11允许最多4096字节的cookie
- Firefox 3.6.3允许最多4097字节的Cookie
- Safari 5允许最多4097字节的coookies
您可以转到此link并点击
来测试浏览器Cookie大小限制运行当前浏览器的测试
因此,如果确实如此,那么您需要减少cookie的大小。如果您不想这样做,并假设您正在开发HTML5,还有其他简单的方法可以解决这个问题。
如果您想仅保留该会话的数据,请使用 sessionStorage ,否则请使用 localStorage 。阅读有关sessionStorage和localStorage here
的更多信息