gpt4 book ai didi

javascript - 为 cookie 设置一个新值会创建一个重复的 cookie - jquery cookie

转载 作者:行者123 更新时间:2023-11-30 12:45:53 40 4
gpt4 key购买 nike

如果我在不同的页面上设置了一个 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
}
}

我错过了什么吗?

请帮忙

最佳答案

您需要设置 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: '/'});
}

关于javascript - 为 cookie 设置一个新值会创建一个重复的 cookie - jquery cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22500503/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com