1. /**
  2. * 添加商品及数量到购物车cookie中,返回当前商品在cookie中的总数
  3. */
  4. function AddToShoppingCar(id, num, type) {
  5. var _num = 1;
  6. if (num != undefined){
  7. _num = num;
  8. }
  9. if (type == undefined){
  10. alert("请设置产品种类");
  11. return false;
  12. }
  13. var totalNum = _num; //总数默认为传入参数
  14. var cookieSet = { expires: 7, path: '/' }; //设置cookie路径的
  15. // $.cookie(cookieProductID, null, cookieSet);//清除Cookie
  16. // var jsonStr = "[{'ProductID':'" + id + "','Num':'" + _num + "'}]"; //构造json字符串,id是商品id num是这个商品的数量
  17. var jsonStr = "[{'ProductID':'" + id + "','Num':'" + _num + "','Type':'" + type + "'}]"; //构造json字符串,id是商品id num是这个商品的数量
  18. console.log(jsonStr);
  19. console.log($.cookie(cookieProductID));
  20. if ($.cookie(cookieProductID) == null) {
  21. $.cookie(cookieProductID, jsonStr, cookieSet); //如果没有这个cookie就设置他
  22.  
  23. // ============
  24. var jsonObj = eval('(' + $.cookie(cookieProductID) + ')'); //如果有,把json字符串转换成对象
  25. var findProduct = false;//是否找到产品ID,找到则为TRUE,否则为FALSH
  26. for(var obj in jsonObj) {
  27. if(jsonObj[obj].ProductID == id) {
  28. console.log("数量:" + parseInt(jsonObj[obj].Num));
  29. jsonObj[obj].Num = parseInt(jsonObj[obj].Num);
  30. totalNum = jsonObj[obj].Num;
  31. findProduct = true;
  32. break;
  33. }
  34. }
  35. if(findProduct == false){ //没找到,则添加
  36. jsonObj[jsonObj.length] = new Object();
  37. jsonObj[jsonObj.length - 1].ProductID = id;
  38. jsonObj[jsonObj.length - 1].Num = num;
  39. jsonObj[jsonObj.length - 1].Type = type;
  40. }
  41. $.cookie(cookieProductID, JSON.stringify(jsonObj), cookieSet); //写入coockie JSON需要json2.js支持
  42. // ============
  43. }else{
  44. var jsonObj = eval("(" + $.cookie(cookieProductID) + ")"); //如果有,把json字符串转换成对象
  45. var findProduct = false;//是否找到产品ID,找到则为TRUE,否则为FALSH
  46. for(var obj in jsonObj) {
  47. if(jsonObj[obj].ProductID == id) {
  48. console.log("数量:" + parseInt(jsonObj[obj].Num));
  49. jsonObj[obj].Num = parseInt(jsonObj[obj].Num) + _num;
  50. totalNum = jsonObj[obj].Num;
  51. findProduct = true;
  52. break;
  53. }
  54. }
  55. if(findProduct == false){ //没找到,则添加
  56. jsonObj[jsonObj.length] = new Object();
  57. jsonObj[jsonObj.length - 1].ProductID = id;
  58. jsonObj[jsonObj.length - 1].Num = num;
  59. jsonObj[jsonObj.length - 1].Type = type;
  60. }
  61. $.cookie(cookieProductID, JSON.stringify(jsonObj), cookieSet); //写入coockie JSON需要json2.js支持
  62. }
  63. return totalNum;
  64. // alert($.cookie(cookieProductID));
  65. }

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

  1. /**
  2. *创建与给定的名称和值和其他可选参数的cookie。
  3. *
  4. * @example $ .cookie('the_cookie','the_value');
  5. * @desc 设置cookie的值。
  6. * @example $ .cookie('the_cookie','the_value',{到期:7,路径:'/',域名:'jquery.com“,安全:真});
  7. * @desc 创建一个cookie与所有可用的选项。
  8. * @example $ .cookie('the_cookie','the_value');
  9. * @desc 创建一个会话cookie。
  10. * @example $ .cookie('the_cookie',NULL);
  11. * @desc 由空传递的值删除的cookie。
  12. *
  13. * @param 参数字符串名称的Cookie的名称。
  14. * @param 参数字符串值的cookie的值。
  15. * @param 参数对象的选择对象文本包含键/值对提供可选的cookie的属性。
  16. * @option 号码|日期到期一个整数从现在起指定到期日在天或Date对象。
  17. * 如果指定了负值(例如,在过去的日期),该cookie将被删除。
  18. * 如果设置为空或省略,cookie将是一个会话cookie并不会被保留
  19. * 当在浏览器退出。
  20. * @option 字符串路径的Cookie路径属性附加伤害值(默认值:页面的路径创建的cookie)。
  21. * @option 字符串域的cookie域属性的值(默认值:页面的域名创建的cookie)。
  22. * @option 布尔安全的,如果属实,将Cookie的安全属性将被设置和cookie的传输将
  23. * 需要一个安全协议(如HTTPS)。
  24. * @type 未定义
  25. *
  26. * @name $ .cookie
  27. * @cat 插件/曲奇
  28. * @author 克劳斯Hartl/klaus.hartl@stilbuero.de
  29. */
  30.  
  31. /**
  32. * Get the value of a cookie with the given name. 获取给定名字的cookie的值。
  33. *
  34. * @example $.cookie('the_cookie');
  35. * @desc Get the value of a cookie. 获取cookie的值。
  36. *
  37. * @param String name The name of the cookie.
  38. * @return The value of the cookie.
  39. * @type String
  40. *
  41. * @name $.cookie
  42. * @cat Plugins/Cookie
  43. * @author Klaus Hartl/klaus.hartl@stilbuero.de
  44. */
  45. jQuery.cookie = function(name, value, options) {
  46. if (typeof value != 'undefined') { // name and value given, set cookie
  47. options = options || {};
  48. if (value === null) {
  49. value = '';
  50. options.expires = -1;
  51. }
  52. var expires = '';
  53. if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
  54. var date;
  55. if (typeof options.expires == 'number') {
  56. date = new Date();
  57. date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
  58. } else {
  59. date = options.expires;
  60. }
  61. expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
  62. }
  63. var path = options.path ? '; path=' + options.path : '';
  64. var domain = options.domain ? '; domain=' + options.domain : '';
  65. var secure = options.secure ? '; secure' : '';
  66. document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
  67. } else { // only name given, get cookie
  68. var cookieValue = null;
  69. if (document.cookie && document.cookie != '') {
  70. var cookies = document.cookie.split(';');
  71. for (var i = 0; i < cookies.length; i++) {
  72. var cookie = jQuery.trim(cookies[i]);
  73. // Does this cookie string begin with the name we want?
  74. if (cookie.substring(0, name.length + 1) == (name + '=')) {
  75. cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
  76. break;
  77. }
  78. }
  79. }
  80. return cookieValue;
  81. }
  82. };

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. C语言I作业05

    问题 答案 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/9772 我在 ...

  2. JAVA GUI 事件监听事件 详解 和 案例.

    GUI(图形用户界面) Graphical User Interface(图形用户接口) 用图形的 方式, 来显示 计算机操作的 界面, 这样更方便 更直观. CLI Command Line Use ...

  3. shell 字符串比较与脚本 too many arguments 报错

    一.问题 最近在写 shell 脚本的时候,遇到了一些小问题,就是我在判断一个字符串是否为空的时候经常报下面的错,程序是正常执行了,但是有这个提示很蛋疼,下面就是看看是什么问题导致的? [: too ...

  4. 表格可拖拉列改变列大小(使用的时候将youElement全部替换称你要添加这个效果的元素,需是jqery的选择器格式,如:$("table th/td"))

    $(function () { var isMouseDown = false; var currentTh = null; youElement.bind({ mousedown: function ...

  5. python内置模块collections介绍

    目录 python内置模块collections介绍 1.namedtuple 2.deque 3.defaultdict 4.OrderedDict 5.ChainMap 6.Counter 7.小 ...

  6. len、is、==、可变于不可变类型

    a="asdfghjkl;'iuygb" b="小米" c=['a','b','c'] d= {'name':1,'age':24} # len统计字符或元素的 ...

  7. 源码学习系列之SpringBoot自动配置(篇二)

    源码学习系列之SpringBoot自动配置(篇二)之HttpEncodingAutoConfiguration 源码分析 继上一篇博客源码学习系列之SpringBoot自动配置(篇一)之后,本博客继续 ...

  8. java线程池的介绍与使用(Executor框架)

    1. 先来看一下类构成 public interface Executor { //顶级接口Executor,定义了线程执行的方法 void execute(Runnable command); } ...

  9. 暑假CV-QKD的相关论文单词集(第一弹)

    CV-QKD  连续变量-量子秘钥分发 Quadrature  正交 Photon     光子 Coherent    连续的,连贯的 Reconciliation   调解 Cryptograph ...

  10. CCF-画字符-详细的注释

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...