基于Cookie的购物车
var Cookies = {};
Cookies.set = function (name, value) {
var argv = arguments;
var argc = arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : '/';
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + escape(value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
};
Cookies.get = function (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
var j = 0;
while (i < clen) {
j = i + alen;
if (document.cookie.substring(i, j) == arg)
return Cookies.getCookieVal(j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0)
break;
}
return null;
};
Cookies.clear = function (name) {
if (Cookies.get(name)) {
var expdate = new Date();
expdate.setTime(expdate.getTime() - (86400 * 1000 * 1));
Cookies.set(name, "", expdate);
}
};
Cookies.getCookieVal = function (offset) {
var endstr = document.cookie.indexOf(";", offset);
if (endstr == -1) {
endstr = document.cookie.length;
}
return unescape(document.cookie.substring(offset, endstr));
};
var Global = {};
Global.getParam = function (param) {
var params = Ext.urlDecode(location.search.substring(1));
return param ? params[param] : params;
}
//购物车
var ShoppingCart = {};
//新增商品
ShoppingCart.add = function (cid, did, price) {
var ck = Global.getParam("sid") + "_" + Global.getParam("uid") + "_sc";
if (Cookies.get(ck) == null) {
var exp = new Date();
exp.setTime(exp.getTime() + 7 * 24 * 60 * 60 * 1000);
Cookies.set(ck, JSON.stringify({ TotalCount: 0, TotalMoney: 0 }), exp);
}
var cart = eval('(' + Cookies.get(ck) + ')');
//类别
if (cart[cid] == undefined) {
cart[cid] = { num: 0 };
}
//商品
if (cart[did] == undefined) {
cart[did] = { cid: cid, num: 0 };
}
//计算
if (cart[did].num < 9) {
cart[did].num = cart[did].num + 1;
//类别(方便查找)
cart[cid].num = cart[cid].num + 1;
//总数量,总金额
cart["TotalCount"] = cart["TotalCount"] + 1;
cart["TotalMoney"] = cart["TotalMoney"] + price;
}
console.log(cart);
Cookies.set(ck, JSON.stringify(cart));
};
//移除商品
ShoppingCart.remove = function (cid, did, price) {
var ck = Global.getParam("sid") + "_" + Global.getParam("uid") + "_sc";
var cart = eval('(' + Cookies.get(ck) + ')');
if (cart[did] != undefined && cart[did].num > 0) {
cart[did].num = cart[did].num - 1;
cart["TotalCount"] = cart["TotalCount"] - 1;
cart["TotalMoney"] = cart["TotalMoney"] - price;
if (cart[cid] != undefined) {
cart[cid].num = cart[cid].num - 1;
}
}
Cookies.set(ck, JSON.stringify(cart));
};
//清空购物车
ShoppingCart.clear = function () {
var ck = Global.getParam("sid") + "_" + Global.getParam("uid") + "_sc";
Cookies.clear(ck);
};
//获取某商品的数量
ShoppingCart.getGoodNum = function (did) {
var ck = Global.getParam("sid") + "_" + Global.getParam("uid") + "_sc";
if (Cookies.get(ck) == null)
return 0;
var cart = eval('(' + Cookies.get(ck) + ')');
if (cart[did] == undefined)
return 0;
else
return cart[did].num;
};
//显示购物车的总数量和价格
ShoppingCart.displayTotal = function () {
var ck = Global.getParam("sid") + "_" + Global.getParam("uid") + "_sc";
if (Cookies.get(ck) == null)
return "数量:0,金额:¥0";
var cart = eval('(' + Cookies.get(ck) + ')');
return "数量:" + cart["TotalCount"] + ",金额:¥" + cart["TotalMoney"];
};
基于Cookie的购物车的更多相关文章
- 基于Cookie的SSO登录分析和实现
什么是SSO? 现在很多大的互联网公司都会有很多的应用,比如以下是淘宝网的截图: 天猫 聚划算 头条等都是不同的应用,有的甚至采用完全不同的域名,但是所有在淘宝注册的用户都是使用的一套用户名和口令,如 ...
- 浏览器禁用Cookie,基于Cookie的会话跟踪机制失效的解决的方法
当浏览器禁用Cookies时.基于Cookie的会话跟踪机制就会失效.解决的方法是利用URL重写机制跟踪用户会话. 在使用URL重写机制的时候须要注意.为了保证会话跟踪的正确性,全部的链接和重定向语句 ...
- 【JSP】Cookie的使用及保存中文,并用Cookie实现购物车功能
Cookie是服务器存放在客户端的一些数据,比如密码,以及你曾经访问过的一些数据. 设置Cookie //设置cookie Cookie cookie = new Cookie("TOM&q ...
- nginx第三方模块---nginx-sticky-module的使用(基于cookie的会话保持)
目前的项目网站架构中使用了F5和nginx,F5用来做负载均衡,nginx只用作反向代理服务器.最近应客户的要求准备去掉F5,使用软负载.大家都知道nginx抗并发能力强,又可以做负载均衡,而且使用n ...
- Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录
1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...
- 使用nginx sticky实现基于cookie的负载均衡
在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接.使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端 ...
- (26)基于cookie的登陆认证(写入cookie、删除cookie、登陆后所有域下的网页都可访问、登陆成功跳转至用户开始访问的页面、使用装饰器完成所有页面的登陆认证)
获取cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age ...
- Asp.Net Core基于Cookie实现同域单点登录(SSO)
在同一个域名下有很多子系统 如:a.giant.com b.giant.com c.giant.com等 但是这些系统都是giant.com这个子域. 这样的情况就可以在不引用其它框架的情况下, ...
- 使用nginx sticky实现基于cookie的负载均衡【转】
在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接.使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端 ...
随机推荐
- 【转载】Oracle死锁概念,阻塞产生的原因以及解决方案
参考原文:http://blog.sina.com.cn/s/blog_9d12d07f0102vu72.html 锁是一种机制,一直存在:死锁是一种错误,尽量避免. 首先,要理解锁和死锁的概念: ...
- 硬盘 SMART 检测参数详解[转]
一.SMART概述 硬盘的故障一般分为两种:可预测的(predictable)和不可预测的(unpredictable).后者偶而会发生,也没有办法去预防它,例如芯片突然失效,机械撞击等.但像电机轴承 ...
- 利用nginx搭建RTMP视频点播、直播、HLS服务器
开发环境 Ubuntu 14.04 server nginx-1.8.1 nginx-rtmp-module nginx的服务器的搭建 安装nginx的依赖库 sudo apt-get update ...
- Android:使用 DownloadManager 进行版本更新,出现 No Activity found to handle Intent 及解决办法
项目中,进行版本更新的时候,用的是自己写的下载方案,最近看到了使用系统服务 DownloadManager 进行版本更新,自己也试试. 在下载完成以后,安装更新的时候,出现了一个 crash,抓取的 ...
- ITOO高校云平台V3.1--项目总结(二)
自身责任要明白 心态要明白 布置任务要有反馈 总结 今天下午.举办了一场ITOO高校云平台3.1总结大会,针对3.1开发的过程中统计上来的问题进行讨论. 通过讨论统计上来的问题,映射到自身,看看自己还 ...
- 快速开方法(c语言)译文
人们最早就在Quake3源代码中发现了类似如下的C代码,它可以快速的求1/sqrt(x),在3D图形向量计算方面应用很广. float invSqrt(float x) { float xhalf = ...
- Atitti python2.7安装 numpy attilax总结
Atitti python2.7安装 numpy attilax总结 1.1. easy_install 安装模式,没有 easy_install ,先手动安装1 1.2. 安装setuptools ...
- HAProxy压测及参数调优
背景 小米容器云平台,在构建云厂商集群时,需要通过HAProxy将云厂商LB流量从宿主机转到容器中,但对于HAProxy的性能没有把握.参考网上的一篇HAProxy压测文章,文章中提到HAProxy ...
- 菜鸟调错(五)——jetty运行时无法保存文件
背景交代: 上一篇博客写的是用jetty和Maven做开发.测试.在使用的过程中遇到一个小问题,就是在jetty启动以后,修改了jsp.xml等文件无法保存. 错误信息: 解决方案: 到Maven库( ...
- npm WARN build `npm build` called with no arguments. Did you mean to `npm run-script build`?
跑npm build结果如下: npm WARN build `npm build` called with no arguments. Did you mean to `npm run-script ...