设置一个新的值给一个cookie创建一个重复的cookie - jquery cookie
Setting a new value to a cookie creates a duplicate cookie - jquery cookie
当我试图删除cookie时,如果我将其设置在不同的页面上,我有一个问题。场景如下:
我在我的主页上,设置了一个cookie值(通过添加产品到我的购物篮),我可以在页面上删除它。
但是当我转到另一个页面并尝试删除相同的cookie(product)时,cookie将以新值再次创建,它不会重新设置我当前的cookie。
我使用以下代码添加/删除cookie:
$(".add-basket").click(function(e){
e.preventDefault();
var ean = $(this).attr('ean');
var value = $(this).attr("value");
var path = $(this).attr("imgpath");
if($.cookie("mycookie")==undefined || $.cookie("mycookie")==""){
$.cookie("mycookie" , ean + "~" + value + "~" + path);
} else if($.cookie("mycookie").indexOf(ean) == -1 ){
$.cookie("mycookie",$.cookie("mycookie") + "|" + ean + "~" + value + "~" + path);
}
});
$(".remove-basket").click(function(e){
e.preventDefault();
var ean = $(this).attr('ean');
var value = $(this).attr('value');
var path = $(this).attr("imgpath");
var val = ean + "~" + value + "~" + path; //value to be removed
if ($.cookie("mycookie") !== undefined) {
var cookie_val = $.cookie("mycookie");
if (cookie_val.indexOf(val) !== -1) {
//check value present in cookie
var arr = cookie_val.split('|'); //remove spaces and split with |
var index = arr.indexOf(val);//get index of value to be deleted
arr.splice(index, 1); //remove value from array
$.cookie("mycookie", arr.join('|')); //convert array to sting using join and set value to cookie
}
}
我错过了什么吗?
请帮
您需要设置cookie的有效域,尝试使用:
$.cookie("mycookie", 'value', {path: '/'});
这将使cookie在整个站点上有效,如果这不起作用,请尝试清除旧的cookie。
下面是使用JSON的例子:// sample data
var data = [
{ ean: 1, value: 2, path: 3},
{ ean: 1, value: 2, path: 3}
];
// insert data
data.push({ ean:2, value: 3, path: 4});
// save to cookie
$.cookie('mycookie', JSON.stringify(data), {path: '/'});
// load from cookie
data = JSON.parse( $.cookie('mycookie') );
所以,把你的处理器改成:
$(".add-basket").click(function(e){
e.preventDefault();
var ean = 1;
var value = 1;
var path = 1;
var cookie = JSON.parse( $.cookie("mycookie") || '[]' );
cookie.push({
ean: ean,
value: value,
path: path
});
$.cookie("mycookie", JSON.stringify(cookie), {path: '/'});
});
$(".remove-basket").click(function(e){
e.preventDefault();
var ean = $(this).attr('ean');
var value = $(this).attr('value');
var path = $(this).attr("imgpath");
var cookie = JSON.parse( $.cookie("mycookie") || '[]' );
$.each(cookie, function (index, row) {
if (row.value == value) {
cookie.splice(index, 1);
}
});
$.cookie("mycookie", JSON.stringify(cookie), {path: '/'});
}
似乎你有cookie Path
设置的问题。来自jQuery Cookie插件文档:
默认情况下,cookie的路径是创建cookie的页面的路径(标准浏览器行为)。如果您想让它在整个域中可用,请使用
path: '/'
。默认:创建cookie的页面路径。
也许你的cookie只在一个页面上有效?你必须为你的cookie设置路径名。
$.cookie("mycookie" , ean + "~" + value + "~" + path, { path: '/' } ); // path:'/' is setting a cookie which is valid for all pages on your domain
你甚至不需要清除cookie,只需要设置路径相同,例如你可以设置路径为"/",cookie在整个应用程序/站点中都有作用。但是,如果你没有指定路径,它会自动取当前文件夹的路径,你的代码文件在其中设置cookie。
相关文章:
- 在jQuery AJAX请求后创建一个Cookie
- 创建一个cookie来控制Jquery切换的内容
- 在js中有一个cookie保存序列化的svgs
- 在javascript中为几个页面设置一个cookie
- 如何创建一个 cookie 数组并反转它
- 我只能让一个cookie在javascript中有一个值
- 如何将php数组存储在一个cookie中,然后通过javascript读取它
- 如果我使用另一个域名来提供我的JavaScript,并且该JavaScript设置了一个cookie,那么这算不算第三方
- SoundManager插件暂停它并记住一个cookie
- 我怎么能读取数组我保存在一个cookie与jquery.cookie
- 一个cookie上有多个值
- 如何在JavaScript中编写一个cookie来记住用户名
- 有没有办法为一个请求设置一个cookie ?
- NPM tough-cookie:保存一个cookie,然后转储它
- 创建一个cookie,通过域B中的弹出窗口访问域a
- 客户端可以模拟一个cookie
- 如何创建一个cookie和写入一个数值
- 在RestAngular请求中发送一个Cookie
- 在javascript中写一个cookie
- 设置一个cookie来保存用户的语言选择,并被重定向到所选页面而不是主页