大家都知道商城系统中是离不开购物车的,据观察,网上大多数商城程序的购物车都是采用的一种比较简单的存储方式来实现购物车,那就是把选中了的ID直接拼接起来。这种做法当然在需求不高的情况下足矣,可是想要拥有一个更健壮的购物车的话,却不能满足了。
我的方法是将购物车内商品的几个基本必要属性都要存储起来,如:品名、数量、当前价格、图片地址等等。
这些属性我们怎么来存呢?
方法不是唯一的,数据库、SESSION、Cookies……,可能大部分朋友会选用数据库,我选用的是COOKIES,因为购物车仅仅用来为用户购买商品提供个便利的集中容器,既然是临时用的,何必要劳驾数据库呢?我写程序的原则是:要尽可能的给服务器减压。用COOKIES来存储,就是存储在客户端。
存储我们选用了COOKIES,那么接下来就应该是如何来操作这个"小甜饼"了.
如何来操作COOKIES,实现购物车呢?
还是那句话,尽可能给服务器减压,既然存储用了客户端的东东,那么我们操作当然也可以用客户端的东东啊,那就是JAVASCRIPT了,嗯,JS是可以直接读写COOKIES的。以下是JS读写COOKIES的代码:
这些操作偶就直接贴代码了,都做了注释的,如果有不明之处可以回帖,我尽力作答。
说明下:如果JS本身具有能直接操作带有子键的COOKIES的话,那完全没有必要写出下面那么多行的代码了!
至此,购物车的核心操作部分已经完毕,接下来就是如何体现出购物车内的东西了!
在这里,我只写出ASP.NET来体现购物车的代码,^_^,因为其他的语言偶也不怎么熟悉。
如果你已经看明白了上面的购物车添加商品的JS代码,那么你应该知道我们将如何来读取购物车内的物品了。前面我提到过带有子键的COOKIES,大家知道ASP.NET中,COOKIES是可以分组的,结构类似于:
["A1"]["11111"]
["A1"]["22222"]
["A1"]["33333"]
上面的A1是一个COOKIES组,后面的111,222分别是这个组下面的子键,之前我们的JS在增加商品进入COOKIES的时候就是这样来存储的。每个商品的ID作为一个子键,然后商品的其他属性即为该子键的COOKIES值。那么你可能想问:多个属性是怎么存储的呢?很简单,直接把多个属性值用"|"隔开即可。
["carList"]["120"]="充气娃娃|5|500.50|cqww.jpg" //就类似于这种结构了
以下给出ASP.NET来读取购物车中所有物品的代码,其实就那么一小段:
了解三层开发的朋友应该知道,上面代码中的MY_Shop.Model.CShoppingCartItem类实际上就是个实体类。为了不让新手感到迷惑,下面贴出实体类的代码:
OH,全剧终!第一次写技术文章,可能有些潦草,希望能给朋友们一些帮助,如果您有好的意见可以直接回帖提出,但谢绝那些出口成脏的大侠!