/**
* 添加商品及数量到购物车cookie中,返回当前商品在cookie中的总数
*/
function AddToShoppingCar(id, num, type) {
var _num = 1;
if (num != undefined){
_num = num;
}
if (type == undefined){
alert("请设置产品种类");
return false;
}
var totalNum = _num; //总数默认为传入参数
var cookieSet = { expires: 7, path: '/' }; //设置cookie路径的
// $.cookie(cookieProductID, null, cookieSet);//清除Cookie
// var jsonStr = "[{'ProductID':'" + id + "','Num':'" + _num + "'}]"; //构造json字符串,id是商品id num是这个商品的数量
var jsonStr = "[{'ProductID':'" + id + "','Num':'" + _num + "','Type':'" + type + "'}]"; //构造json字符串,id是商品id num是这个商品的数量
console.log(jsonStr);
console.log($.cookie(cookieProductID));
if ($.cookie(cookieProductID) == null) {
$.cookie(cookieProductID, jsonStr, cookieSet); //如果没有这个cookie就设置他 // ============
var jsonObj = eval('(' + $.cookie(cookieProductID) + ')'); //如果有,把json字符串转换成对象
var findProduct = false;//是否找到产品ID,找到则为TRUE,否则为FALSH
for(var obj in jsonObj) {
if(jsonObj[obj].ProductID == id) {
console.log("数量:" + parseInt(jsonObj[obj].Num));
jsonObj[obj].Num = parseInt(jsonObj[obj].Num);
totalNum = jsonObj[obj].Num;
findProduct = true;
break;
}
}
if(findProduct == false){ //没找到,则添加
jsonObj[jsonObj.length] = new Object();
jsonObj[jsonObj.length - 1].ProductID = id;
jsonObj[jsonObj.length - 1].Num = num;
jsonObj[jsonObj.length - 1].Type = type;
}
$.cookie(cookieProductID, JSON.stringify(jsonObj), cookieSet); //写入coockie JSON需要json2.js支持
// ============
}else{
var jsonObj = eval("(" + $.cookie(cookieProductID) + ")"); //如果有,把json字符串转换成对象
var findProduct = false;//是否找到产品ID,找到则为TRUE,否则为FALSH
for(var obj in jsonObj) {
if(jsonObj[obj].ProductID == id) {
console.log("数量:" + parseInt(jsonObj[obj].Num));
jsonObj[obj].Num = parseInt(jsonObj[obj].Num) + _num;
totalNum = jsonObj[obj].Num;
findProduct = true;
break;
}
}
if(findProduct == false){ //没找到,则添加
jsonObj[jsonObj.length] = new Object();
jsonObj[jsonObj.length - 1].ProductID = id;
jsonObj[jsonObj.length - 1].Num = num;
jsonObj[jsonObj.length - 1].Type = type;
}
$.cookie(cookieProductID, JSON.stringify(jsonObj), cookieSet); //写入coockie JSON需要json2.js支持
}
return totalNum;
// alert($.cookie(cookieProductID));
}

这里使用到了 $.cookie这个插件。这个插件的代码如下:

 /**
*创建与给定的名称和值和其他可选参数的cookie。
*
* @example $ .cookie('the_cookie','the_value');
* @desc 设置cookie的值。
* @example $ .cookie('the_cookie','the_value',{到期:7,路径:'/',域名:'jquery.com“,安全:真});
* @desc 创建一个cookie与所有可用的选项。
* @example $ .cookie('the_cookie','the_value');
* @desc 创建一个会话cookie。
* @example $ .cookie('the_cookie',NULL);
* @desc 由空传递的值删除的cookie。
*
* @param 参数字符串名称的Cookie的名称。
* @param 参数字符串值的cookie的值。
* @param 参数对象的选择对象文本包含键/值对提供可选的cookie的属性。
* @option 号码|日期到期一个整数从现在起指定到期日在天或Date对象。
* 如果指定了负值(例如,在过去的日期),该cookie将被删除。
* 如果设置为空或省略,cookie将是一个会话cookie并不会被保留
* 当在浏览器退出。
* @option 字符串路径的Cookie路径属性附加伤害值(默认值:页面的路径创建的cookie)。
* @option 字符串域的cookie域属性的值(默认值:页面的域名创建的cookie)。
* @option 布尔安全的,如果属实,将Cookie的安全属性将被设置和cookie的传输将
* 需要一个安全协议(如HTTPS)。
* @type 未定义
*
* @name $ .cookie
* @cat 插件/曲奇
* @author 克劳斯Hartl/klaus.hartl@stilbuero.de
*/ /**
* Get the value of a cookie with the given name. 获取给定名字的cookie的值。
*
* @example $.cookie('the_cookie');
* @desc Get the value of a cookie. 获取cookie的值。
*
* @param String name The name of the cookie.
* @return The value of the cookie.
* @type String
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
jQuery.cookie = function(name, value, options) {
if (typeof value != 'undefined') { // name and value given, set cookie
options = options || {};
if (value === null) {
value = '';
options.expires = -1;
}
var expires = '';
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
var date;
if (typeof options.expires == 'number') {
date = new Date();
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
} else {
date = options.expires;
}
expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
}
var path = options.path ? '; path=' + options.path : '';
var domain = options.domain ? '; domain=' + options.domain : '';
var secure = options.secure ? '; secure' : '';
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
} else { // only name given, get cookie
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
};

jQuery基于json与cookie实现购物车的方法的更多相关文章

  1. 基于Jquery+Ajax+Json+存储过程 高效分页

    在做后台开发中,都会有大量的列表展示,下面给大家给大家分享一套基于Jquery+Ajax+Json+存储过程高效分页列表,只需要传递几个参数即可.当然代码也有改进的地方,如果大家有更好的方法,愿留下宝 ...

  2. 基于Cookie的购物车

    var Cookies = {}; Cookies.set = function (name, value) { var argv = arguments; var argc = arguments. ...

  3. 基于jquery的json转table插件jsontotable

    分享一款基于jquery的json转table插件jsontotable.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="container ...

  4. jQuery对json快速赋值

    jQuery对json快速赋值,重点在于将input的id取跟JSON同样的名称. <!DOCTYPE html> <html> <head lang="en& ...

  5. 用jquery解析JSON数据的方法以及字符串转换成json的3种方法

    用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是 json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject ...

  6. [转]jquery 对 Json 的各种遍历

    原文地址:http://caibaojian.com/jquery-each-json.html 概述 JSON(javascript Object Notation) 是一种轻量级的数据交换格式,采 ...

  7. jQuery.parseJSON(json) 使用方法

    jQuery.parseJSON(json) 接受一个JSON字符串,返回解析后的对象. 返回值:String传入一个畸形的JSON字符串会抛出一个异常.比如下面的都是畸形的JSON字符串:{test ...

  8. JQuery 获取json数据$.getJSON方法的实例代码

    这篇文章介绍了JQuery 获取json数据$.getJSON方法的实例代码,有需要的朋友可以参考一下 前台: function SelectProject() { var a = new Array ...

  9. jQuery基于ajax实现星星评论代码

    本文实例讲述了jQuery基于ajax实现星星评论代码.分享给大家供大家参考.具体如下: 这里使用jquery模仿点评网的星星评论功能,Ajax评论模块,鼠标点击星星即可评价,下边是分数,可以点击后给 ...

随机推荐

  1. 简述同步和异步,以及js的任务队列.

    javascript是单线程的一门语言,所以在执行任务的时候,所有任务必须排队,然后一个一个的执行.这就是同步模式 所以同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个 ...

  2. 学习笔记 : python 文件操作

    1.如果文件路径带有   \ 比如  open('c:\python\test.txt') 会报:SyntaxError: (unicode error) 'unicodeescape' codec ...

  3. ssm整合的登录

    新建一个web工程,主要结构如下: 数据库创建如下: 控制层的代码FormController 类 package codeRose.controller; import org.springfram ...

  4. JVM 中你不得不知的一些参数

    有的同学虽然写了一段时间 Java 了,但是对于 JVM 却不太关注.有的同学说,参数都是团队规定好的,部署的时候也不用我动手,关注它有什么用,而且,JVM 这东西,听上去就感觉很神秘很高深的样子,还 ...

  5. java 打包web 项目

    1 选择你的web项目 2 右击,选择export 3 选择web下的war file 4 将打包好war包,保存在tomcat的webapps下 5 运行tomcat,tomcat会自动帮你解压这个 ...

  6. layer弹框的上面各个属性 -可配置

    <script type="text/javascript"> 12 //eg 13 layer.open({ 14 title:"标题信息提示", ...

  7. [.NET] 常用的reusable library

    1. NAudio NAudio is an open source .NET audio and MIDI library, containing dozens of useful audio re ...

  8. hdu 1874 畅通工程续 (floyd)

    畅通工程续Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  9. C# 彻底搞懂async/await

    前言 Talk is cheap, Show you the code first! private void button1_Click(object sender, EventArgs e) { ...

  10. [springboot 开发单体web shop] 8. 商品详情&评价展示

    上文回顾 上节 我们实现了根据搜索关键词查询商品列表和根据商品分类查询,并且使用到了mybatis-pagehelper插件,讲解了如何使用插件来帮助我们快速实现分页数据查询.本文我们将继续开发商品详 ...