1、cookie使用方法/ JScript 文件 /*/* by 码农.KEN (2007-11-9) */ var cookie= /读取COOKIES,n为COOKIE名 Get:function(n) var re=new RegExp(n+=(;*);?,gi); var r=re.exec(document.cookie)|; return (r.length1?r1:null) , Get1:function(n) var re=new RegExp(n+=(;*);?,gi); var r=re.exec(document.cookie)|; return unescape(r.le
2、ngth1?r1:null) , /写入COOKIES,n为Cookie名,v为value Set:function(n,v,e,p,d,s) var t=new Date; if(e) / 8.64e7 一天 3.6e6 一小时 t.setTime(t.getTime() + (e*3.6e6); document.cookie=n+=+v+; +(!e?:; expires=+t.toUTCString()+(!p?:; path=+p)+(!d?:; domain=+d)+(!s?:; secure) / Set cookie , Set1:function(n,v,e,p,d,s) v
3、ar t=new Date; if(e) / 8.64e7 一天 3.6e6 一小时 t.setTime(t.getTime() + (e*8.64e7); document.cookie=n+=+escape(v)+; +(!e?:; expires=+t.toUTCString()+(!p?:; path=+p)+(!d?:; domain=+d)+(!s?:; secure) / Set cookie , Del:function(n,p,d) var t=cookie.Get(n); document.cookie=n+=+(!p?:; path=+p)+(!d?:; domain=+
4、d)+; expires=Thu, 01-Jan-70 00:00:01 GMT; return t ; /var TotalPro = cookie.Get(TotalPro); /当前车内含有商品的总数 下面该说说JS具体如何来操作购物车了,在这里,购物车需要的操作有:增加商品、修改商品、删除商品。 这些操作偶就直接贴代码了,都做了注释的,如果有不明之处可以回帖,我尽力作答。 说明下:如果JS本身具有能直接操作带有子键的COOKIES的话,那完全没有必要写出下面那么多行的代码了! var Common = /移除数组中指定项 delArr:function(ar,n) /n表示第几项,从0
5、开始算起。 if(n0) /如果n0,则不进行任何操作。 return ar; else return ar.slice(0,n).concat(ar.slice(n+1,ar.length); , /添加至购物车 intoCar:function(proid,quantity,proname,imgurl,_price) if(proid != & proname != ) var ProIDList = cookie.Get(carList); /车内商品ID列表 if(ProIDList!=null & ProIDList!= & ProIDList!=null) if(Common.h
6、asOne(proid) ProIDList += &+proid+=+proid+|+quantity+|+escape(proname)+|+escape(imgurl)+|+_price; cookie.Set(carList,ProIDList,2,/);/更新购物车清单 TotalPro = cookie.Get(TotalPro); /当前车内含有商品的总数 TotalPro+; /总数+1 cookie.Set(TotalPro,TotalPro,2,/); else alert(购物车中已含有此商品); else ProIDList=proid+=+proid+|+quanti
7、ty+|+escape(proname)+|+escape(imgurl)+|+_price; cookie.Set(carList,ProIDList,2,/);/更新购物车清单 cookie.Set(TotalPro,1,2,/); Common.reloadcar();/更新顶部个数显示 /alert(ProIDList); , /添加物品结束 /重置购物车内个数 reloadcar:function() var t=cookie.Get(TotalPro); if(t!=&t!=null) document.getElementById(cart_num).innerText=( +
8、cookie.Get(TotalPro) + ); else document.getElementById(cart_num).innerText=(0); , /重置结束 /检验购物车内是否已经含有该商品 hasOne:function(pid) ProIDList = cookie.Get(carList); /车内商品ID列表 if(ProIDList.lastIndexOf(&) != -1) var arr=ProIDList.split(&); for(i=0;iarr.length;i+) /alert(arr.indexOf(=); if(arr.substr(0,arr.i
9、ndexOf(=)=pid) return false; else if(ProIDList!=null&ProIDList!=) if(ProIDList.substr(0,ProIDList.indexOf(=)=pid) return false; return true; , /检测结束 /移除某商品 reMoveOne:function(proid) if(!Common.hasOne(proid) if(ProIDList.lastIndexOf(&) != -1) var arr=ProIDList.split(&); for(i=0;iarr.length;i+) if(arr
10、.substr(0,arr.indexOf(=)=proid) var arr2=Common.delArr(arr,i); var tempStr=arr2.join(&); /由数组重组字符串 cookie.Set(carList,tempStr,2,/);/更新购物车清单 var t=cookie.Get(TotalPro); cookie.Set(TotalPro,t-1,2,/);/更新Cookies中的个数 / Common.reloadcar();/更新顶部个数显示 return; else cookie.Set(carList,null);/更新购物车清单 var t=cook
11、ie.Get(TotalPro); cookie.Set(TotalPro,0,2,/);/更新购物车清单 / Common.reloadcar();/更新顶部个数显示 , /移除物品结束 /修改某物品数量 updateQuantity:function(proid,quantity) ProIDList = cookie.Get(carList); /车内商品ID列表 if(ProIDList.lastIndexOf(&) != -1) var arr=ProIDList.split(&); var sub=Common.getSubPlace(ProIDList,proid);/获取该物品
12、在COOKIE数组中的下标位置 var arr2=arrsub.split(|); arr21=quantity; var tempStr=arr2.join(|);/由数组重组字符串 arrsub = tempStr; var newProList = arr.join(&);/由数组重组字符串 cookie.Set(carList,newProList,2,/);/更新购物车清单 /alert(newProList); else var arr=ProIDList.split(|); arr1=quantity; var newProList=arr.join(|); cookie.Set
13、(carList,newProList,2,/);/更新购物车清单 /alert(newProList); , /修改物品结束 /返回指定物品所在数组的下标位置 getSubPlace:function(list,proid) var arr=list.split(&); for(i=0;iarr.length;i+) if(arr.substr(0,arr.indexOf(=)=proid) return i; /返回下标结束 ; 至此,购物车的核心操作部分已经完毕,接下来就是如何体现出购物车内的东西了! 在这里,我只写出ASP.NET来体现购物车的代码,_,因为其他的语言偶也不怎么熟悉。
14、如果你已经看明白了上面的购物车添加商品的JS代码,那么你应该知道我们将如何来读取购物车内的物品了。前面我提到过带有子键的COOKIES,大家知道ASP.NET中,COOKIES是可以分组的,结构类似于: A111111 A122222 A133333 上面的A1是一个COOKIES组,后面的111,222分别是这个组下面的子键,之前我们的JS在增加商品进入COOKIES的时候就是这样来存储的。每个商品的ID作为一个子键,然后商品的其他属性即为该子键的COOKIES值。那么你可能想问:多个属性是怎么存储的呢?很简单,直接把多个属性值用|隔开即可。 carList120=充气娃娃|5|500.50
15、|cqww.jpg /就类似于这种结构了 以下给出ASP.NET来读取购物车中所有物品的代码,其实就那么一小段: public ArrayList GetItems() HttpCookie c = HttpContext.Current.Request.CookiescarList; ArrayList items = new ArrayList(); for (int i = 0; i c.Values.Count; i+) string vals = c.Values.Split(|); MY_Shop.Model.CShoppingCartItem item = new MY_Shop
16、.Model.CShoppingCartItem(); item.ProductID = int.Parse(vals0); item.Quantity = int.Parse(vals1); item.ProductName = HttpContext.Current.Server.UrlDecode(string)vals2); item.ImgUrl = HttpContext.Current.Server.UrlDecode(string)vals3); item.Price_s = decimal.Parse(vals4); items.Add(item); return items
17、; 了解三层开发的朋友应该知道,上面代码中的MY_Shop.Model.CShoppingCartItem类实际上就是个实体类。为了不让新手感到迷惑,下面贴出实体类的代码: Code using System; namespace MY_Shop.Model public class CShoppingCartItem : IShoppingCartItem private int intProductID; private string strProductName; private string strImgUrl; private int intQuantity; private dec
18、imal decPrice_s; public int ProductID get return intProductID; set intProductID = value; public string ProductName get return strProductName; set strProductName = value; public string ImgUrl get return strImgUrl; set strImgUrl = value; public int Quantity get return intQuantity; set intQuantity = value; public decimal Price_s get return decPrice_s; set decPrice_s = value; OH,全剧终!第一次写技术文章,可能有些潦草,希望能给朋友们一些帮助,如果您有好的意见可以直接回帖提出,但谢绝那些出口成脏的大侠!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1