javascript - 创建一个简单的多维对象数组并分配给 cookie
问题描述
我正在尝试为匿名用户创建一个购物车,该购物车存储在用户计算机上的 cookie 中。但我很困惑。
这是我的代码
$(document).ready(function () {
var PID = $('#Input_Product').val();
var Qty = $('#Input_Qty').val();
var P = $('#Input_Price').val();
var data = { ProductID: PID, Quantity: Qty, Price: P };
$("#btnWrite").click(function () {
// $.cookie("Name", $("#txtName").val());
document.cookie = "Product='+PID+'; expires=Friday, 20 Sep 2019 01:00:00 UTC; path=/ ;";
document.cookie = "Quantity='+Qty+'; expires=Friday, 20 Sep 2019 01:00:00 UTC; path=/;";
document.cookie = "Price='+P+'; expires=Friday, 20 Sep 2019 01:00:00 UTC; path=/;";
});
我想要实现的是获取一个多维对象数组并将购物篮的值分配给一个 cookie 或多个 cookie。
同样是 javascript 的新手,如何在客户端检索值。我知道我可以使用 stringify 发布到服务器
我尝试使用它进行初始化,但出现错误
for (var i = 0; i < 1; i++) {
data[i] = new { ProductID: PID, Quantity: Qty };
alert(data[i]);
}
解决方案
曲奇之路
Cookie 不能存储空格或逗号,每个赋值语句只能存储一个键值对。您可以将每个值分开并将其分配给 cookie,如下所示:
document.cookie = "Product=+PID+;"
document.cookie = "expires=+DATESTRING+;"
document.cookie = "path=+PATH+;"
但是,每当您像这样分配另一个 cookie 时,以前的 cookiepath
和expires
将被覆盖。更好的方法是将所有数据编码为 cookie 安全字符串:
document.cookie = "Product=+PID+DATESTRING+PATH+;"
然后您可以查找产品并使用.split('+')
.
现代方式
与 localStorage 相比,Cookie 有几个缺点。最有影响的两个是 (1) 浏览器中的 cookie 通过每个 http/s 请求发送(潜在的个人信息泄露)和 (2) cookie 的数据存储限制为 4KB,localStorage 允许 5MB(明显更多! )。
要在此处以您想要的方式使用它,您可以执行以下操作:
// setting it:
localStorage.setItem('Product', '+PID+DATESTRING+PATH+')
// getting it:
const productData = localStorage.getItem('Product').split('+')
const productId = productData[0]
const productDate = productData[1]
const productPath = productData[2]
希望有帮助!
推荐阅读
- c++ - 将 exprtk 变量分配为向量成员
- python - {:d} 在 Python 中做了什么?
- android - 如何创建已弃用版本的 Android 虚拟设备
- loops - SCSS 颜色循环
- javascript - toFixed 返回错误的输出
- javascript - 使用 javascript 编辑表单时填充下拉列表
- python - 在 Pandas 中字符串比较、列平均和删除 NaN?
- java - 如何通过java代码登录我的帐户
- ios - 我可以在 Siri 快捷方式中为建议的 InvocationPhrase 提供动态字符串吗?
- c - 读取函数永远不会在 C 中返回 0