jQuery基于json与cookie实现购物车的方法
- /**
- * 添加商品及数量到购物车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实现购物车的方法的更多相关文章
- 基于Jquery+Ajax+Json+存储过程 高效分页
在做后台开发中,都会有大量的列表展示,下面给大家给大家分享一套基于Jquery+Ajax+Json+存储过程高效分页列表,只需要传递几个参数即可.当然代码也有改进的地方,如果大家有更好的方法,愿留下宝 ...
- 基于Cookie的购物车
var Cookies = {}; Cookies.set = function (name, value) { var argv = arguments; var argc = arguments. ...
- 基于jquery的json转table插件jsontotable
分享一款基于jquery的json转table插件jsontotable.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="container ...
- jQuery对json快速赋值
jQuery对json快速赋值,重点在于将input的id取跟JSON同样的名称. <!DOCTYPE html> <html> <head lang="en& ...
- 用jquery解析JSON数据的方法以及字符串转换成json的3种方法
用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是 json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject ...
- [转]jquery 对 Json 的各种遍历
原文地址:http://caibaojian.com/jquery-each-json.html 概述 JSON(javascript Object Notation) 是一种轻量级的数据交换格式,采 ...
- jQuery.parseJSON(json) 使用方法
jQuery.parseJSON(json) 接受一个JSON字符串,返回解析后的对象. 返回值:String传入一个畸形的JSON字符串会抛出一个异常.比如下面的都是畸形的JSON字符串:{test ...
- JQuery 获取json数据$.getJSON方法的实例代码
这篇文章介绍了JQuery 获取json数据$.getJSON方法的实例代码,有需要的朋友可以参考一下 前台: function SelectProject() { var a = new Array ...
- jQuery基于ajax实现星星评论代码
本文实例讲述了jQuery基于ajax实现星星评论代码.分享给大家供大家参考.具体如下: 这里使用jquery模仿点评网的星星评论功能,Ajax评论模块,鼠标点击星星即可评价,下边是分数,可以点击后给 ...
随机推荐
- C语言I作业05
问题 答案 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/9772 我在 ...
- JAVA GUI 事件监听事件 详解 和 案例.
GUI(图形用户界面) Graphical User Interface(图形用户接口) 用图形的 方式, 来显示 计算机操作的 界面, 这样更方便 更直观. CLI Command Line Use ...
- shell 字符串比较与脚本 too many arguments 报错
一.问题 最近在写 shell 脚本的时候,遇到了一些小问题,就是我在判断一个字符串是否为空的时候经常报下面的错,程序是正常执行了,但是有这个提示很蛋疼,下面就是看看是什么问题导致的? [: too ...
- 表格可拖拉列改变列大小(使用的时候将youElement全部替换称你要添加这个效果的元素,需是jqery的选择器格式,如:$("table th/td"))
$(function () { var isMouseDown = false; var currentTh = null; youElement.bind({ mousedown: function ...
- python内置模块collections介绍
目录 python内置模块collections介绍 1.namedtuple 2.deque 3.defaultdict 4.OrderedDict 5.ChainMap 6.Counter 7.小 ...
- len、is、==、可变于不可变类型
a="asdfghjkl;'iuygb" b="小米" c=['a','b','c'] d= {'name':1,'age':24} # len统计字符或元素的 ...
- 源码学习系列之SpringBoot自动配置(篇二)
源码学习系列之SpringBoot自动配置(篇二)之HttpEncodingAutoConfiguration 源码分析 继上一篇博客源码学习系列之SpringBoot自动配置(篇一)之后,本博客继续 ...
- java线程池的介绍与使用(Executor框架)
1. 先来看一下类构成 public interface Executor { //顶级接口Executor,定义了线程执行的方法 void execute(Runnable command); } ...
- 暑假CV-QKD的相关论文单词集(第一弹)
CV-QKD 连续变量-量子秘钥分发 Quadrature 正交 Photon 光子 Coherent 连续的,连贯的 Reconciliation 调解 Cryptograph ...
- CCF-画字符-详细的注释
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...