二十一天学通JavaScript:cookie的编码
本文节选自《21天学通JavaScript》一书

cookie都是使用未编码的格式存入在cookie文件中的。但是在cookie中是不允许包含空格、分号、逗号等特殊符号的。如果要将这些特殊符号也写入cookie中,那就必须在写入cookie之前,先将cookie用escape编码,再在读取cookie时通过unescape函数将其还原。
【范例14-4】对cookie进行编码和解码,尝试在cookie中加入一些特殊的字符。如示例代码14-4所示。
示例代码14-4
01    <head>
02    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
03    <title>cookie编码解码</title>                <!-- -文档的标题->
04    <script language="javascript">                //JavaScript程序
05    function SetCookie(name,value)                //自定义函数
06    {
07        window.document.cookie= name + "=" + escape(value)+";";                                                                // 设置cookie
08        alert("设置成功!");
09     }
10    function GetCookie(cookieName,codeFind)     //自定义函数
11    {
12        var cookieString = document.cookie;    //获取cookie
13        var start = cookieString.indexOf(cookieName + '=');                                                                    //截取cookie的名
14        if (start == -1)                         //若不存在该名字的 cookie
15        return null;                            //返回空值
16        start += cookieName.length + 1;                    
17        var end = cookieString.indexOf(';', start);                                                                            //取得cookie的值
18        if(codeFind==1)                        //当用户以解码的方式查看时执行if语句
19        {
20            if (end == -1)                    //防止最后没有加“;”冒号的情况
21            return unescape(cookieString.substring(start));                                                                    //返回编码后的值
22            return unescape(cookieString.substring(start, end));                                                                //返回编码后的值
23        }
24        else
25        {
26            // 当用户以非解码的方式查看时,执行以下三句代码
27            if (end == -1)                    //防止最后没有加“;”冒号的情况
28            return cookieString.substring(start);                                                                            //返回cookie值
29            return cookieString.substring(start, end);                                                                        //返回cookie值
30        }
31    }
32    function setValue()                        //一个自定义函数
33    {
34         if(Name.value!="")                    //当输入文本不为空时
35        {
36            // 当用户输入信息不为空时,获取输入的信息并调用函数设置cookie
37            SetCookie(Name.value,Value.value);
38            Value.value="";                    //将文本框清空
39            Name.value="";                    //将姓名的文本框清空
40        }
41        else
42        {
43        // 当用户输入变量名为空时,提示用户输入不正确的信息
44    alert("设置失败,cookie的名不能为空!")        //提示用户设置失败
45        }
46    }
47    function getValue(n)                        //自定义构造一个函数
48    {
49        if(Name.value=="")                    //文本为空
50        {
51            alert("你没有输入要查找的cookie名");    //检查输入是否为空
52        }
53        else
54        {
55            var str=GetCookie(Name.value,n);    // 查询的值不为空时,调用查询的函数
56            if(str!="")
57            {
58                Value.value=str;                //取得查询的结果
59            }
60            else
61            {
62                Value.value="该值为空!";        //结果为空时提示客户
63            }
64        }
65    }
66    </script>
67    </head>
68    <body>    
69    <label>
70    cookie名:    
71    <input type="text" name="Name" />            <!-输入cookie的文本框-->
72    </label>                                    <!-标签的结束-->
73    <label> <br />                            <!-换行-->
74    <br />                                    <!-换行-->
75    cookie值:
76    <input type="text" name="Value" />            <!- cookie值的文本框-->
77    </label>                                    <!-标签的结束-->
78    <p>
79      <label>                                    <!-设置cookie的按钮-->
80      <input type="submit" name="Submit" value="设置cookie"  οnclick="setValue ()"/>
81      </label>
82      <label>                                    <!-查询cookie的按钮-->
83          <input type="submit" name="Submit2" value="查询cookie" οnclick="getValue (1)" />
84      </label>
85      <label>                                    <!-以非解码的方式查看-->
86          <input type="submit" name="Submit3" value="非解码查询"  οnclick="getValue (0)"/>
87      </label>
88    </p>
89    </body>
【运行结果】打开网页文件运行程序。
【代码解析】该代码段第5~9行是设置cookie的过程。这里只用了一个参数。代码第10~31行是读取cookie的过程。主要是利用“;”和“=”将cookie的键与值分开,并找到所要的结果。
警告:如果cookie里有特殊字符,则一定要经过编码和译码。

二十一天学通JavaScript:cookie的编码相关推荐

  1. 《21天学通HTML+CSS+JavaScript Web开发(第7版)》——1.4 统一资源定位符

    本节书摘来自异步社区<21天学通HTML+CSS+JavaScript Web开发(第7版)>一书中的第1章,第1.4节,作者:[美]Laura Lemay(劳拉·莱梅) , Rafe C ...

  2. 21天学通HTML+CSS+JavaScript Web开发(第7版) 中文完整pdf扫描版

    21天学通HTML CSS JavaScript Web开发(第7版)是全球畅销书<21天学通使用HTML与CSS发布Web站点>的全新升级版本,作者在本书囊括了新的HTML5与CSS3技 ...

  3. 5天速通JavaScript

    5天速通JavaScript 一,JavaScript是什么和作用? 二,JavaScript的组成与特点 二,JavaScript入门 三,JavaScript的注释 四,浏览器控制台的使用 五,基 ...

  4. 学通PHP的24堂课(配光盘)(软件开发羊皮卷)

    查看书籍详细信息: 学通PHP的24堂课(配光盘)(软件开发羊皮卷) 内容简介 <学通php的24堂课>以24堂课的形式,从初中级用户的角度出发,突出学.练.用相结合,用科学合理的设计全面 ...

  5. 学通C#的24堂课(奋斗的小鸟)_PDF 电子书

    下载地址:http://pan.baidu.com/share/link?shareid=2442589965&uk=721744522  QQ:2864670220 主编推荐     < ...

  6. 1、《学通Java Web的24堂课》纠错之一 —— 开篇:《学通Java Web的24堂课》简介

    2012年3月8日购于卓越网(真是个好日子) 基本信息 出版社: 清华大学出版社; 第1版 (2011年7月2日) 丛书名: 软件开发羊皮卷 平装: 718页 正文语种: 简体中文 开本: 16 IS ...

  7. JavaScript Cookie记录用户上次登陆的时间

    目录 目录 前言 一.Cookie是什么? 二.需求分析 需求: 思路: 三.如何判断什么情况下是第一次访问,什么情况下是第n次访问? 四.代码如下 1.创建登录页面 2.登录成功判断是否为第一次访问 ...

  8. JavaScript最全编码规范

    转载: JavaScript最全编码规范 类型 ●基本类型:访问基本类型时,应该直接操作类型值 ●string ●number ●boolean ●null ●undefined var foo = ...

  9. 《21天学通C++(第7版)》——12.8 作业

    本节书摘来自异步社区出版社<21天学通C++(第7版)>一书中的第12章,第12.8节,作者: [美]Siddhartha Rao, [德]Nicolai M. Josuttis,更多章节 ...

  10. 21day学通python epub_21天就让你掌握Python语言,《21天学通Python》PDF版送给你去学...

    Python的学习书籍小编看过很多,但是这本<21天学通Python>真的是堪称极品! 本书的作者团队成员为一线开发工程师.资深编程专家或专业培训师,在编程开发方面有着丰富的经验,并已出版 ...

最新文章

  1. WEB 测试点总结
  2. tableau可视化数据分析60讲(二十一)-tableau预测及趋势线
  3. 【经典重温】所有数据无需共享同一个卷积核!谷歌提出条件参数化卷积CondConv(附Pytorch复现代码)...
  4. 百度AI学习:三、文字识别
  5. Windows Server 2008 Server Core模式
  6. 【数据结构】线段树(interval tree)
  7. 有关STL使用上的一些注意事项。关于某些函数的参数问题。
  8. 25. 熟悉非标准的哈希容器
  9. java项目关联关系_Mybatis一对多关联关系映射实现过程解析
  10. 解决keil4与keil5不兼容问题
  11. matlab电流测量接法,matlab电压电流测量模块的使用
  12. 打印纸张尺寸换算_电脑打印纸规格全记录
  13. Linux学习(4)-文件颜色,绿色,蓝色,白色,红色等代表的意义
  14. TesterHome android app 编写历程(六)
  15. java web工程,传递字符串参数小记
  16. SEO主要是做什么的?零基础能学习吗?
  17. Linux中磁盘扫描流程描述
  18. golang之gorm的事务操作 事务不成功原因
  19. EE308_Lab1
  20. 同盾设备指纹简单分析及手机相关ID了解

热门文章

  1. 我的2017:从工作再到学生
  2. 2017-10-26 消息队列设计
  3. CF #319 div 2 D
  4. Coursera ML 逻辑回归与正则化
  5. IE9 表格错位bug
  6. 收集一些关于视频文件格式以及编码计算的一些知识
  7. linux 内核修炼之道——系统调用
  8. 做好数据分析的关键是打好组合拳
  9. libevhtp介绍与demo构建
  10. 20170908-构建之法:现代软件工程-阅读笔记