手推车”功能的实现 “手推车”是在线购物网站(零售)中一项重要的功能。本文将要探讨用ASP程序实现“手推车”功能的技巧。要想在网站上实现“手推车”功能,有好几种方法,比如用Cookie、Session或者隐藏帧等。这几种方法各有优缺点,这里着重讨论用Cookie来实现“手推车”功能。 用Cookie实现 “手推车”功能的优缺点 Cookie是通过服务器端CGI、脚本或者客户端脚本把信息保存在客户机上的,以便为服务器或客户机再次使用这些信息提供方便。在JavaScript中有一些专门用来对Cookie进行操作的函数,如设置Cookie值的Setcookie(name,value),删除Cookie的Deletecookie(name)等(详细见源码)。使用Cookie来保存“手推车”信息的优点是,即使当用户不小心关闭了浏览器窗口,“手推车”中的信息也不会丢失,并且它占用很少的服务器端资源,缺点是必须要求用户端浏览器支持Cookie并且打开它。 “手推车”包含的功能子项 1.把商品添加到“手推车”,就是订购。 2.从“手推车”中删掉已订购的商品。 3.修改“手推车”中某一商品的数量。 4.清空“手推车”。 5.显示,统计“手推车”中的商品。 往“手推车”中 添加商品 非常简单,就是把某一商品的信息(名称、价格、数量、折扣等)写入Cookie即可。这里不必把商品的所有信息都写入Cookie,只要记下商品在数据库中编号或ID(这里用catid表示)与商品的数量就行。在显示“手推车”信息时,根据catid可以从商品数据库中查询出这种商品的所有具体信息。往“手推车”中添加商品的实现方法如下: function Addcat(catid,number){ //把商品添加到“手推车”函数 if (number<=0)DeleteCookie(″mycat″+catid); //如果商品的数量少于或等于0,则删除该商品 else SetCookie(″mycat″+catid,catid+″,″+number); //把商品ID与数量写入Cookie var cat=window.open(″showcat.asp″,″cat″,″toolbar=no,menubar=no,location=no,status=no,width=420,height=280″); //打开一个新窗口来显示统计的商品信息,即显示“手推车”} 从“手推车”中 删掉商品 也就是把Cookie中的该商品信息删除掉,调用Deletecat(catid)即可。 function Deletecat(catid){ DeleteCookie(″mycat″+catid); //从Cookie中删除 var cat=window.open(″showcat.asp″,″cat″,″toolbar=no,menubar=no,location=no,status=no,width=420,height=280″); //在CAT窗口显示统计的商品信息,即刷新显示“手推车” } 修改“手推车”中 商品的数量 原理跟往“手推车”中添加商品是一样的,只不过把商品的数量修改成现在所要的数量。 显示与统计 “手推车”中的商品信息 显示的效果由Showcat.asp实现。这里使用了ASP中Request.Cookies集合。Request.Cookies用来检索客户中Cookie值。我们通过遍历 Cookies 集合中的所有 Cookie 值取出我们的“手推车”的信息,然后从中分离出商品ID与商品数量。这里使用了VBscript中的SPLIT函数,SPLIT函数返回基于 0 的一维数组,其中包含指定数目的子字符串。 取出商品ID与商品数量后再根据商品ID从商品数据库中查询出该商品的具体信息,最后输出商品的名称、单价、折扣、数量和小计等,并累计商品总件数与商品总金额。 源代码如下: Showcat.asp javascript中操作COOKIE的函数源码如下: function Setcookie (name, value) { //设置名称为name,值为value的Cookie var argc = SetCookie.arguments.length; var argv = SetCookie.arguments; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + value + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } function Deletecookie (name) { //删除名称为name的Cookie var exp = new Date(); exp.setTime (exp.getTime() - 1); var cval = GetCookie (name); document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); } function Clearcookie() //清除COOKIE { var temp=document.cookie.split(";"); var loop3; var ts; for (loop3=0;loop3 { ts=temp[loop3].split("=")[0]; if (ts.indexOf(’mycat’)!=-1) DeleteCookie(ts); //如果ts含“mycat”则执行清除 } } function getCookieVal (offset) { //取得项名称为offset的cookie值 var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function GetCookie (name) { //取得名称为name的cookie值 var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-30 03:30 , Processed in 0.212960 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.