javascript asp教程第九课--cookies

Response Cookies in General:

We'll start with the Response Cookies collection. I don't think it could be any easier. You simply put the name of the cookie in the argument. The corresponding value is a string. The only time it gets complicated is when you use keys (which I demonstrate below).

<%@LANGUAGE="JavaScript"%> <% var Tomorrow=new Date() Tomorrow.setDate(Tomorrow.getDate() + 1) myExpire = (Tomorrow.getMonth() + 1) + "/" + Tomorrow.getDate() myExpire += "/" + Tomorrow.getFullYear() Response.Cookies("firstCookie") = "I like cookies." Response.Cookies("firstCookie").Expires=myExpire Response.Cookies("secondCookie") = "ASP Cookies Are Easy." Response.Cookies("secondCookie").Expires=myExpire Response.Cookies("thirdCookie")("firstKey")="Here's the first Key." Response.Cookies("thirdCookie")("secondKey")="Here's the second Key." Response.Cookies("thirdCookie").Expires=myExpire %> <HTML> We're just setting <%=Response.Cookies.Count%> cookies.<BR> <A HREF="script09a.asp">Click Here</A> to retrieve these cookies. </HTML>

Click Here to run the script in a new window.

Setting a cookie with ASP is pretty simple. The format is Response.Cookies("name")="value". That "value" can be either a JavaScript string or an ASP native type such as Request.Form("userEmail").

Response Cookie Keys:

If on the first page of your ASP application Response.Cookies("myOnlyCookie") is set, and subsequently on page two of your application Response.Cookies("myOnlyCookie") is reassigned a second value, then only the second value will remain. The first value is lost in this circumstance.

The solution is to either use multiple cookies or to use multiple Keys in the SAME cookie.

Response.Cookies("thirdCookie")("firstKey")="Here's the first Key." Response.Cookies("thirdCookie")("secondKey")="Here's the second Key."

The Setting of one or more Keys is pretty simple. It follows this format: Response.Cookies("name")("key")="value". Again, the "value" can either be a JavaScript string or ASP native type. The advantage of using keys is that you can store multiple Key/Value pairs inside the very same cookie.

Request Cookies:

Generally you will find ASP cookie management to be far easier than Client Side JavaScript cookies. Down below is the script that retrieves the cookies.

<%@LANGUAGE="JavaScript"%> <% if (Response.Cookies.Count <= 0) { Response.Redirect("script09.asp") } var firstCookie = Request.Cookies("firstCookie"); var secondCookie = Request.Cookies("secondCookie"); var thirdCookie2Keys = Request.Cookies("thirdCookie")("firstKey") thirdCookie2Keys += " " + Request.Cookies("thirdCookie")("secondKey"); %> <HTML> There are <%=Request.Cookies.Count%> Cookies.<BR> 1) <%=firstCookie%><BR> 2) <%=secondCookie%><BR> 3) <%=thirdCookie2Keys%><BR> <A HREF="script09b.asp">Click Here</A> to see how we would sort cookies if we didn't know their names. </HTML>

Click Here to run the script in a new window.

Do I even need to explain "firstCookie" and "secondCookie"? It's so easy. However, I will have to have explain the retrieval of Keys in "thirdCookie".

We retrieve cookies in almost exactly the same way that we set them, and that goes for Keys as well. If you keep track of your Key names, then retrieving their values is pretty easy.

var thirdCookieFirstKey = Request.Cookies("thirdCookie")("firstKey")

Deleting Cookies:

To delete a cookie, give it an expiration date in the past. The following is not in our examples, but it would work.

var Yesterday=new Date() Yesterday.setDate(Yesterday.getDate() - 1) myExpire = (Yesterday.getMonth() + 1) + "/" + Yesterday.getDate() myExpire += "/" + Yesterday.getFullYear() Response.Cookies("firstCookie").Expires=myExpire

Cookie Crumbs:

What if you lose track of your cookie names? What if you lose your Keys? First of all, don't do that. But secondly, we have options.

We can use a VBScript Function with a for/each loop. We can use Javascript's new Enumerator( ) or we can use a pair of for Loops. We, however, cannot use JavaScript's for/in loop. This means we have to be creative.

<%@LANGUAGE="JavaScript"%> <% if (Response.Cookies.Count <= 0) { Response.Redirect("script09.asp") } %> <HTML> <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Function forEachCookie() dim x,y,z for each x in Request.Cookies if Request.Cookies(x).HasKeys then for each y in Request.Cookies(x) z = z & x & ":" & y & "=" & Request.Cookies(x)(y) & "; " next else z = z & x & "=" & Request.Cookies(x) & "; " end if next forEachCookie = z End Function </SCRIPT> <% Response.Write("<STRONG>Let's use a VBScript function to ") Response.Write("sort out the Cookies and Keys.</STRONG><BR>\r") var longCookie = forEachCookie() if (longCookie) { longCookie = longCookie.split("; ") for (i=0;i<=longCookie.length-1;i++) { Response.Write(longCookie[ i ] + "<BR>\r") } } Response.Write("<HR>\r") Response.Write("<STRONG>Let's use <I>new Enumerator( )</I> to ") Response.Write("sort out the Cookies and Keys.</STRONG><BR>\r") var myEnum = new Enumerator(Request.Cookies); for (myEnum; !myEnum.atEnd() ; myEnum.moveNext() ) { Response.Write(myEnum.item() + "=") n=Request.Cookies(myEnum.item()).Count if (n) { for (o=1;o<=n;o++) { Response.Write(Request.Cookies(myEnum.item())(o) + " ") } //Begin alternate method of using Enumerator() Response.Write("<BR>\r<STRONG>OR... </STRONG>") Response.Write(myEnum.item() + "=") Response.Write(unescape(Request.Cookies(myEnum.item()))) //End alternate method } else { Response.Write(Request.Cookies(myEnum.item())) } Response.Write("<BR>\r") } Response.Write("<HR>\r") Response.Write("<STRONG>Let's use a pair of JavaScript loops to ") Response.Write("sort out the Cookies and Keys.</STRONG><BR>\r") a=Request.Cookies.Count for (b=1;b<=a;b++) { d = Request.Cookies(b).Count if (d) { for (c=1;c<=d;c++) { Response.Write(Request.Cookies(b)(c) + " ") } Response.Write("<BR>\r") } else { Response.Write(Request.Cookies(b) + "<BR>\r") } } %> </HTML>

Click Here to run the script in a new window.

We do the same job three times. You decide for yourself which one you like best. In the first example you can plainly see from the script, I ask a VBScript function to find and break down all the cookies. I then output the data back to the waiting JavaScript variable.

var longCookie = forEachCookie()

What can I say? Don't lose track of your cookies and don't lose track of your Keys. Otherwise you might have to get a VBScript slim jim.

The new Enumerator() is okay. I use Enumerator two different ways; one way fails to capture the Key names, and the other way successfully captures the key names (but it needs unescape() to get the Key values to print normally).

In round three, I use a pair of for loops, but they're not as functional as for/in would be. (Notice the lack of Key names.)

Misc. Notes:

We didn't use new String( ) in this lesson. But remember, if you want to manipulate the cookie values inside JavaScript functions or methods, then you will need new String().

var firstCookie = new String(Request.Cookies("firstCookie") ) firstCookie = firstCookie.toUpperCase()

Also, if you were to use Client Side scripting to locate cookies, you would have noticed that there is an extra cookie. ASP keeps track of its sessions using a cookie.

时间: 2024-09-20 13:26:08

javascript asp教程第九课--cookies的相关文章

javascript asp教程第九课--cookies_ASP基础

Response Cookies in General: We'll start with the Response Cookies collection. I don't think it could be any easier. You simply put the name of the cookie in the argument. The corresponding value is a string. The only time it gets complicated is when

javascript asp教程第二课--转义字符_ASP基础

并非是题外话:我们在第二课中要讲到的"转义字符"看起来与我们的课程并没有关系.事实并非如此.转义字符是在 asp中使用javascript的一个完整部分.而第二课要讲的恰恰就是转义字符.没有转义字符,那么你为了 写出有效率的asp脚本将会遇到许多的困难.抱歉,下面进入正题:以下是第二课的asp脚本.还记不记得在第一课的列子中,我们怎样编写了一个html输出都在同一行的代码.转义字符允许我们增加 换行符号.下面是我们上边例子在客户端html输出页面的代码:换行符:我又在下面重新打了一行a

JavaScript进阶教程(第二课)第1/3页_基础知识

今天我们将学习一项很有用而且很有趣的内容:cookies - 这是用来记录访问过你的网页的人的信息.利用Cookies你能记录访问者的姓名,并且在该访问者再次访问你的站点时向他发出热情的欢迎信息.你还可以利用cookie记忆用户端的特点 - 如果访问者的所接入的网线的速度慢,cookie可以自动告诉你在给其发送网页的时候只发送尽可能少的图片内容.     只要你在合理的范围内使用cookies(不要用它探询用户的个人隐私),cookies还是相当实用得.所以我要向你们介绍cookies的工作原理

javascript asp教程错误处理_ASP基础

The ASPError Object has zero (0) Methods, nine (9) Properties, zero (0) Events, and zero (0) Collections. AspCode AspDescription Category Column Description File Line Number Source The way you access the ASPError Properties is with a Server Method. Y

JavaScript进阶教程(第一课)第1/3页_基础知识

欢迎您继续学习Javascript进阶教程.在此之前我们已经学习了Javascript初级教程.在这一阶段的学习中我们将继续学习在上次的教程中还没有来得及谈及的问题.我还将向你们展示Javascript的许多神奇功能,使你能够制作真正对多媒体应用程序.     以下是我们将涉及的内容:     给变量赋值     If-then语句     For和while循环     编写你自己的函数     打开及控制窗口     读写HTML 表单     应用数组     控制图片转换     如果这

javascript asp教程添加和修改_ASP基础

The Connection Execute(): If you want to retrieve data from a database then you have no choice but to use a Recordset. However, for the purposes of adding, updating, and deleting data you don't necessarily have to have a Recordset. It's up to you. Fo

javascript asp教程 日期相关_ASP基础

JavaScript is loosely typed. Database files are not. If you put text into a Boolean database column or a Boolean value into a date/time column, then you will get an error. For the most part this is not a problem, except for date/time. It does not cor

javascript asp教程More About Recordsets_ASP基础

Below we will attempt to access data from a database without knowing the column names. Clearly the best way to utilize data in your database is to keep track of your schema. Schema is the layout of data in your database. The concept is well beyond th

javascript asp教程Recordset记录_ASP基础

Recordset is another created/instanciated Object. It is a collection of data taken from a database. Recordset has 26 properties, 25 methods, 11 events, and two (2) collections. The vast majority of Recordset is beyond the scope of this web site. Quic