我在尝试删除Cookie时遇到问题,如果我已将其设置在其他页面上。这是场景:
我在我的主页上并设置了一个cookie值(通过在我的购物篮中添加产品),我可以在该页面上删除它。
但是当我进入另一个页面并尝试删除相同的cookie(产品)时,会再次使用新值创建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
}
}
我错过了什么吗?
请帮忙
答案 0 :(得分:2)
您需要设置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: '/'});
}
答案 1 :(得分:1)
您似乎遇到了设置Cookie Path
的问题。来自jQuery Cookie plugin documentation:
默认情况下,cookie的路径是创建cookie的页面的路径(标准浏览器行为)。如果要在整个域中使其可用,请使用{{ 1}}。默认值:创建cookie的页面路径。
答案 2 :(得分:0)
也许你的cookie只在一个页面上有效?您必须设置cookie的路径名。
$.cookie("mycookie" , ean + "~" + value + "~" + path, { path: '/' } ); // path:'/' is setting a cookie which is valid for all pages on your domain
答案 3 :(得分:0)
你甚至不需要清除cookie,只需设置相同的路径,例如你可以将路径设置为" /"哪个cookie在整个应用程序/站点中具有范围。但是,如果您没有指定路径,它将自动获取您放置代码文件的当前文件夹的路径。