/**
* 添加商品及数量到购物车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. CSPS模拟 96

    我菜的一批. 反省一下,我只能在简单场考的好的原因. 过分依赖灵感,不注意积累思路历程和各种套路.没灵感直接崩了 懒得打暴力,主要还是代码能力限制,打暴力真的很费时费力 不打对拍,这个emmm和第二条 ...

  2. [springboot 开发单体web shop] 5. 用户登录及首页展示

    用户登录及前端展示 用户登录 在之前的文章中我们实现了用户注册和验证功能,接下来我们继续实现它的登录,以及登录成功之后要在页面上显示的信息. 接下来,我们来编写代码. 实现service 在com.l ...

  3. vue cli3.0^版本处理文件下载的问题

    downloadFile(url, fileName) { axios.get(url, { responseType: 'blob' }) .then(({ data }) => { // 为 ...

  4. 美团店铺数据抓取 token解析与生成

    美团.点评网的token都是用一套加密算法,实际上就是个gzip压缩算法.加密了2次,第一次是加密了个sign值,然后把sign值带进去参数中进行第二次加密,最后得出token 分析请求 打开上海美食 ...

  5. go中的关键字-select

    1. select的使用 定义:在golang里头select的功能与epoll(nginx)/poll/select的功能类似,都是坚挺IO操作,当IO操作发生的时候,触发相应的动作. 1.1 一些 ...

  6. lqb 基础练习 闰年判断

    基础练习 闰年判断 时间限制:1.0s   内存限制:256.0MB     问题描述 给定一个年份,判断这一年是不是闰年. 当以下情况之一满足时,这一年是闰年: 1. 年份是4的倍数而不是100的倍 ...

  7. 插入订单并且输出订单号的sql存储过程

    --插入订单-- create proc InsertOrders ( @OrderNumber varchar(300), @OrderState varchar(30), @OrderType v ...

  8. shell脚本3——调试

    bash -x file.sh 这样会把执行到的语句全部打印出来 #!/bin/bash 不会打印的程序块 set -v 需要打印的程序块 set -v 不会打印的程序块

  9. 小白学习React官方文档看不懂怎么办?2.JSX语法

      接下来我们就要讲到JSX语法了,在我们讲它之前,我们先引入一个概念叫语法糖.     听到这个名字首先我们可能会想到一个词叫”糖衣炮弹“,那么什么叫糖衣炮弹呢,就是给你说各种好听的话,来迷惑你,但 ...

  10. [ML机器学习 - Stanford University] - Week1 - 01 Introduction

    What is Machine Learning? Two definitions of Machine Learning are offered. Arthur Samuel described i ...