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 ...
随机推荐
- 第六周java学习总结
学号 20175206 <Java程序设计>第六周学习总结 教材学习内容总结 第七章: 主要内容 内部类 匿名类 异常类 断言 重点和难点 重点:内部类和异常类的理解 难点:异常类的使用 ...
- jupyter nootbook本地使用指南
本地文件读入jupyter notebook 在文件夹内,shift+鼠标右键,出现菜单中选择“”在此处打开命令窗口“”,输入jupyter notebook, 可以把本地文件读入jupyter.
- 装饰器模式-Decorator(Java实现)
装饰器模式-Decorator(Java实现) 装饰器模式允许向一个现有的对象添加新的功能, 同时又不改变其结构. 其中 "现有对象"在本文中是StringDisplay类. 添加 ...
- 编译VisualVM源码解决乱码问题
编译VisualVM源码解决乱码问题 起因 今天在使用VisualVM对测试服务器进行JVM监控的时候,发现所有统计图的横纵坐标都是显示乱码(小方块),即使我的Ubuntu系统使用的是英文语言环境.奇 ...
- c/c++语言开发工具Dev-cpp【推荐】
Dev-cpp: 工具介绍:https://baike.baidu.com/item/dev%20cpp/5617687?fr=aladdin 百度云下载地址:链接: https://pan.baid ...
- react-高阶组件
1.高阶组件就是一个函数,传给它参数(包括组件,变量等),它返回一个新的组件 2.列如现在有这么个高阶组件,根据传入的参数name,从而从localstore中获得这个name的值,然后更新到传入的参 ...
- selenium-webdriver循环点击百度搜索结果以及获取新页面的handler
webdriver还是很有意思的,之前用过Ruby的watir的自动化测试框架,感觉selenium的这套框架更好一些,很容易就可以上手.我虽然不做自动化这块,不过先玩玩再说,多学点东西总之还是好一些 ...
- 写一个python 爬虫爬取百度电影并存入mysql中
目标是利用python爬取百度搜索的电影 在类型 地区 年代各个标签下 电影的名字 评分 和图片连接 以及 电影连接 首先我们先在mysql中建表 create table liubo4( id in ...
- MQTT控制---subscribe
连接服务端 客户端向服务端发送SUBSCRIBE报文用于创建一个或多个订阅. 固定报头 报头长度:2 Bytes 1.报头控制类型(0x82) 报文SUBSCRIBE控制报固定报头的第3.2.1.0位 ...
- The import javax.servlet.jsp.JspException cannot be resolved
问题描述 重新更换了 Apache Tomcat 的版本,在 Eclipse 中项目报错信息:The import javax.servlet.jsp.JspException cannot be ...