jQuery基于json与cookie实现购物车的方法


Posted in Javascript onApril 15, 2016

本文实例讲述了jQuery基于json与cookie实现购物车的方法。分享给大家供大家参考,具体如下:

json 格式:

[{'ProductID':ABC','Num':'1'},{'ProductID':DEF,'Num':'2'}]

这里使用到了 $.cookie这个插件。这个插件的代码在文章的最后

/*
添加商品及数量到购物车cookie中,返回当前商品在cookie中的总数
*/
function AddToShoppingCar(id, num) {
  var _num = 1;
  if (num != undefined)
    _num = num;
  var totalNum = _num; //总数默认为传入参数
  var cookieSet = { expires: 7, path: '/' }; //设置cookie路径的
//  $.cookie(cookieProductID, null, cookieSet);//清除Cookie
  var jsonStr = "[{'ProductID':'" + id + "','Num':'" + _num + "'}]"; //构造json字符串,id是商品id  num是这个商品的数量
  if ($.cookie(cookieProductID) == null) {
    $.cookie(cookieProductID, jsonStr, cookieSet); //如果没有这个cookie就设置他
  }
  else {
    var jsonObj = eval('(' + $.cookie(cookieProductID) + ')'); //如果有,把json字符串转换成对象
    var findProduct = false;//是否找到产品ID,找到则为TRUE,否则为FALSH
    for (var obj in jsonObj) {
      if (jsonObj[obj].ProductID == id) {
        jsonObj[obj].Num = Number(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;
    }
    $.cookie(cookieProductID, JSON.stringify(jsonObj), cookieSet); //写入coockie  JSON需要json2.js支持
  }
  return totalNum;
  //  alert($.cookie(cookieProductID));
}
//以下为cookie插件代码
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程序设计有所帮助。

Javascript 相关文章推荐
event.keyCode键码值表 附只能输入特定的字符串代码
May 15 Javascript
jquery随意添加移除html的实现代码
Jun 21 Javascript
基于jquery的图片幻灯展示源码
Jul 15 Javascript
javascript学习笔记(七)Ajax和Http状态码
Oct 08 Javascript
JavaScript 开发工具webstrom使用指南
Dec 09 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
Mar 30 Javascript
javascript如何实现360度全景照片问题汇总
Apr 04 Javascript
关于 jQuery Easyui异步加载tree的问题解析
Dec 06 Javascript
JS简单实现动态添加HTML标记的方法示例
Apr 08 Javascript
Rollup处理并打包JS文件项目实例代码
May 31 Javascript
一些可能会用到的Node.js面试题
Jun 15 Javascript
小程序简单两栏瀑布流效果的实现
Dec 18 Javascript
Window.Open打开窗体和if嵌套代码
Apr 15 #Javascript
jQuery设置Cookie及删除Cookie实例分析
Apr 15 #Javascript
jQuery获取cookie值及删除cookie用法实例
Apr 15 #Javascript
jQuery通过写入cookie实现更换网页背景的方法
Apr 15 #Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
Apr 15 #Javascript
jQuery遍历DOM元素与节点方法详解
Apr 14 #Javascript
jQuery中的基本选择器用法学习教程
Apr 14 #Javascript
You might like
php set_time_limit()函数的使用详解
2013/06/05 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
万能的php分页类
2017/07/06 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
jQuery autocomplete插件修改
2009/04/17 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
Python中的random()方法的使用介绍
2015/05/15 Python
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
Python笔记之facade模式
2019/11/20 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
什么是组件架构
2016/05/15 面试题
路政管理专业推荐信
2013/11/11 职场文书
办公室保洁员岗位职责
2013/12/02 职场文书
挂科检讨书范文
2014/02/20 职场文书
《金子》教学反思
2014/04/13 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
预备党员半年考察意见
2015/06/01 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python