Cookies的使用之购物车的实现
Cookies的使用之购物车实现
最近学习了JSON对象之后,发现Cookies的使用更加的灵活方便了。ps:JSON不是JS。可以这么理解,JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
首先为了方便,我们可以先写两个方法来简化我们对Cookies的操作:
//设置cookie
function setCookie(cname, cvalue) {
document.cookie = cname + "=" + cvalue + ";";
}
// 获取指定名字的cookie值
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(";");
for (var i = ; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) == ) {
return c.substring(name.length, c.length);
}
}
return "";
}
好了,现在可以直接用上面的方法设置、获取Cookies的值了。
接下来需要知道我们的商品都有什么属性:

我这里有一条内容,这是最简单的商品了。假设这就是我们的商品,他有只有名称,单价两个信息,如何将它们放进Cookies呢?
Cookies只能接收文本内容,也就是一个字符串,如果将这两个信息分开写进Cookies,那用起来可就麻烦了。JSON就很好的解决了这个问题,甚至可以存放数组内容!
部分代码如下:
var product = {
"name": nName,
"price": nPrice,
"count": count
}
"name"用来存储商品名称, "price"用来存储商品单价, "count"用来存储商品数量。
var cartArr = []; //判断Cookies中是否已有cartInfo信息
if(getCookie("cartInfo")!="" && getCookie("cartInfo")!="[]"){
cartArr=JSON.parse(getCookie("cartInfo"));
}
isBuy(cartArr,product);
setCookie("cartInfo", JSON.stringify(cartArr)); // 判断是否已经添加过购物车
function isBuy(cartArr, product) {
for (var i in cartArr) {
if (cartArr[i].name == product.name) {
cartArr[i].count += 1;
return;
}
}
cartArr.push(product);
}
product是我们添加进购物车的商品对象,除此之外我们还需要一个cart数组来存放我们的product对象,因为我们的购物车可不只有一件商品。
上面代码中黄色部分是用到的JSON对象中的两个重要方法。JSON.stringify()的主要作用就是将我们的对象类型转换为字符串类型 ,通过他我们就可以将对象类型甚至是数组类型(数组也是对象)放进Cookies中了。JSON.parse()方式则是将字符串类型转换成对象类型,通过他我们可以将从Cookies中取出来的字符串类型还原为对象。有了这两个方法操作Cookies简直不能太方便!
上面的isBuy()方法的作用是检测cart数组中是否已经存在了当前选中商品,如果有则只需要在商品属性中将count+1即可,如果没有则将整个商品(product对象)push进我们的数组中。
下面是从Cookies中取出购物车信息的代码:
var pro = getCookie("cartInfo");
var cart = JSON.parse(pro);
取出来的pro是字符串类型,经过转换后的cart已经是数组类型了。拿到cart数组相信接下来的工作将简单的多。
以上就是简单的添加购物车的实现。如果有疑问可以留言,有问题希望看到及时指正,谢谢!
Cookies的使用之购物车的实现的更多相关文章
- Django项目纪要
开发流程 公司高层 项目立项 | 市场部门 需求分析-->需求分析说明书, 需求规格说明书 | 产品部门 产品原型-->产品 UI 前端 后端 测试 移动端 | |------------ ...
- ASP.NET知识总结(9.使用Cookies实现购物车)
ListInfo.aspx向购物车的添加商品的方法 private void GouWu(string name, double price, string id) { //往购物车中添加商品 Htt ...
- cookies保存购物车数据的编码问题(pickle和base64)
在保存cookies时,如果存在着中文字符,cookies保存会报错.所以需要对数据进行编码. 通常cookies的保存都是以Base64来保存.所以先要对数据编码成bytes,再编码成base64字 ...
- 使用MongoDB和JSP实现一个简单的购物车系统
目录 1 问题描述 2 解决方案 2.1 实现功能 2.2 最终运行效果图 2.3 系统功能框架示意图 2.4 有关MongoDB简介及系统环境配置 2.5 核心功能代码讲解 ...
- 深入理解cookies
HTTP cookies,通常又称作"cookies",已经存在了很长时间,但是仍旧没有被予以充分的理解.首要的问题是存在了诸多误区,认为cookies是后门程序或病毒,或压根不知 ...
- Cookies的作用
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).Cookies就是服务器暂存放在你的电脑里的资料(.tx ...
- asp.net 之 购物车
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- [转]一步一步asp.net_购物车订单与支付宝
本文转自:http://www.cnblogs.com/mysweet/archive/2012/05/19/2508534.html 最近这几天很忙,一边忙着准备一堆课程设计(8门专业课.....伤 ...
- HTML5 Web Storage -- 让Cookies看起来如此古老
转载 原文 在此两部分组成的系列中,我们将来看看HTML5 规范中最棒而且最有趣的特性之一的Web Storage.我们将看看Web Storage 和 Cookies的历史,并从考虑以下几点: *C ...
随机推荐
- k8s常用命令演示
kubectl run --image=xxx name_xx --port kubectl run --image=nginx nginx-app --port=80 kubectl expose ...
- C# webapi 上传下载图片
客户端上传文件 string url = url + "webUploadFile"; Uri server = new Uri(url); HttpClient httpClie ...
- 076、创建Rex-Ray volume (2019-04-23 周二)
参考https://www.cnblogs.com/CloudMan6/p/7624556.html 前面我们安装部署了 Rex-Ray ,并且成功配置 Virtualbox backend ,今 ...
- GIL全局锁测试
基础知识:https://www.cnblogs.com/SuKiWX/p/8804974.html 测试环境 python3.7默认解释器(cpython) cpu为四核 测试代码 #! /usr/ ...
- 发送邮件,出现异常:服务器响应为: Error: need EHLO and AUTH first !"
在使用 System.Net.Mail组建发送邮件的时候出现了"命令顺序不正确. 服务器响应为: Error: need EHLO and AUTH first !"异常 解决方法 ...
- Java方法参数的传递方式
程序设计语言中,将参数传递给方法(或函数)有两种方法.按值传递(call by value)表示方法接受的是调用者提供的值:按引用调用(call by reference)表示方法接受的是调用者提供的 ...
- C#使用Selenium+PhantomJS抓取数据
本文主要介绍了C#使用Selenium+PhantomJS抓取数据的方法步骤,具有很好的参考价值,下面跟着小编一起来看下吧 手头项目需要抓取一个用js渲染出来的网站中的数据.使用常用的httpclie ...
- C# Datetime时间指定时区
string start_time_str = "2018-03-21 06:00:00"; DateTime.Parse(start_time_str) // :: 格林威治时间 ...
- class和style属性
值类型: 1.表达式计算出的字符串结果或者字符串. 2.对象(表达式或者对象名,建议采用对象名) key为className,值的真假控制这个name的有无. //class <div v-bi ...
- docker安装redis
查询镜像 docker search redis 拉取镜像 docker pull redis 启动容器 docker run --name redis -p 6379:6379 -d --resta ...