二十一天学通JavaScript:cookie的编码

本文介绍如何在JavaScript中处理cookie中的特殊字符,通过编码和解码确保cookie正确存储和读取。提供了一个示例代码,展示了如何设置和读取编码过的cookie。
二十一天学通JavaScript:cookie的编码


前面章节提到,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" onclick="setValue ()"/>
81 </label>
82 <label> <!-查询cookie的按钮-->
83 <input type="submit" name="Submit2" value="查询cookie" onclick="getValue (1)" />
84 </label>
85 <label> <!-以非解码的方式查看-->
86 <input type="submit" name="Submit3" value="非解码查询" onclick="getValue (0)"/>
87 </label>
88 </p>
89 </body>
【运行结果】打开网页文件运行程序,其结果如图14-4所示。
【代码解析】该代码段第5~9行是设置cookie的过程。这里只用了一个参数。代码第10~31行是读取cookie的过程。主要是利用“;”和“=”将cookie的键与值分开,并找到所要的结果。
警告:如果cookie里有特殊字符,则一定要经过编码和译码。

以任务驱动方式讲解,用实例引导读者习,只需21天,便可轻松掌握JavaScript编程。   基础知识→核心技术→典型实例→综合练习→项目案例   242个典型实例、1个项目案例、333个练习题   一线开发人员全程贴心讲解,上手毫不费力   23个小时多媒体语音视频教   本书源代码 + 本书电子教案(PPT)   1000余页编程参考宝典电子书(免费赠送)   21天编程系列特色:光盘提供了源代码、大量多媒体视频教、电子教案及编程电子书。作者均为有多年编程经验的一线程序员或者培训讲师。提供了专门的技术服务论坛:http://www.rzchina.net。按“基础知识→核心技术→典型实例→综合练习→项目案例”的模式讲解。 概念准确、清楚,必要时进行类比,读者很容易理解。提供了大量实例,最后还提供了综合案例,非常实用。对代码进行了丰富的注释,阅读起来没有任何障碍。无论理论知识,还是实例讲解都很详细,很容易掌握。 本书是JavaScript入门教程。JavaScript是Web开发中应用最早、发展最成熟、用户最多的脚本语言。其语法简洁,代码可读性在众多脚本语言中最好,它在使用时不用考虑数据类型,是真正意义上的动态语言。本书总分为四篇,共21章。第一篇完整地讲解了JavaScript的基础知识,主要内容包括JavaScript概述、数据类型、常量与变量、表达式与运算符、程序语句、函数和数组等。第二篇专门介绍JavaScript中内置对象的应用,内容包括JavaScript对象基础、窗口和框架、屏幕和浏览器对象、文档对象、历史对象和地址对象、表单对象和表单元素和脚本化cookie等。第三篇讲解的是JavaScript的高级技术,主要讲解了JavaScript与XML技术、正则表达式、Ajax基础、Ajax高级应用、JavaScript与插件和JavaScript的调试与优化等。最后一篇综合案例篇用一个完整的例子讲解了如何使用JavaScript进行大型应用开发。   本书中,每一篇都是不同层次的完整内容,这不仅给初者安排了循序渐进的习过程,也便于不同层次读者选读。本书既适合没有编程基础的JavaScript语言初者作为入门教程,也可作为大、中院校师生和培训班的教材,对于JavaScript语言开发的爱好者,本书也有较大的参考价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值