使用Cookie JQuery

时间:2019-02-22 12:05:21

标签: javascript jquery cookies

我可以在cookie中存储数组列表吗?

我的阵列列表将是这样

itemsarray

        var productId=[];
	   		productId['id'] = 'product id';
	   		productId['title'] = 'product-name';
        
        itemsarray.push(productId);

0: [id: 153359796766, title: "adidas EQT Cushion ADV Shoes Men's "]
1: [id: 391912235126, title: "Sonos One Voice-Controlled Wireless Smart"]

我已经尝试了以下方法,但是不走运,它总是返回一个空白数组。我认为问题出在JSON.stringify

json_str = JSON.stringify(itemsarray);
$.cookie('ID', json_str);
console.log(json_str);

有什么解决办法吗?

3 个答案:

答案 0 :(得分:0)

首先,您的数组应包含json。

例如:

const items = [
    {id: 153359796766, title: "adidas EQT Cushion ADV Shoes Men's "},
    {id: 391912235126, title: "Sonos One Voice-Controlled Wireless Smart"}
];

如果不需要该数据服务器端,则可以使用localStorage:

localStorage.setItem('items', items);

答案 1 :(得分:0)

您也可以使用localStorage进行此操作,因为大多数浏览器允许您在本地存储中存储更多数据(2019年最大为5Mb),如果不需要服务器读取这些数据,这也可以提高性能。

           new Client
            {
                ClientId = "socialnetwork",
                ClientName = "SocialNetwork",
                ClientSecrets = new [] { new Secret("secret".Sha256()) },
                 //Flow = Flows.ResourceOwner,
                AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
                AllowedScopes = new [] { "socialnetwork",StandardScopes.OpenId },
                Enabled = true,
                AllowOfflineAccess = true
            }

答案 2 :(得分:0)

所有解决方案都提供了替代方案,并建议他改为使用本地存储,这是一个很好的建议(个人而言,我从来没有使用过cookie来代替存储),但是如果OP def需要使用cookie,将是解决该问题的有效方法:

您只需执行以下操作即可存储该数组:

document.cookies = `id={$JSON.stringify(itemsArray)}` 

这会将您的值存储在cookie字符串中。访问该值会更加“复杂”,因为cookie存储为由分号分隔的字符串:

cookies = 'value=thevalue;value2=the2value'

您需要做的就是用“;”分割字符串。或按照mdn网站的建议运行正则表达式:

var cookieValue = document.cookie.replace(/(?:(?:^ |。; \ s id \ s * \ = \ s *( [^;] )。 $)| ^。* $ /,“ $ 1”);

其中 id 代表您的Cookie密钥。

然后您只需执行JSON.parse(cookieValue)

来源:Small cookie framework by mdn