使用Ajax实现购物车(一)
我用的是prototype这个js库!所以关于这个东西我就带过,不了解proto的可以去园子里找相关的资料!
首先说添加购物车的东东,用来存放购物车我用的是session,里面存放Arraylist。因为你不知道客户要购买多少东东。所以你不能用数组这种定长的东东。
这里要考虑的问题:
1、如果添加购车
2、如果将重复的物品累计到一起(如我购买了一瓶洗发水,我再购买一瓶就要累积到2)
3、如何实时的和数据库交互判断库存是否充足。(使用ajax)
其实全部的操作都是使用了ajax操作!
我们用Session["orders"]来存放购物车
来看获得购物车的方法:
首先说添加购物车的东东,用来存放购物车我用的是session,里面存放Arraylist。因为你不知道客户要购买多少东东。所以你不能用数组这种定长的东东。
这里要考虑的问题:
1、如果添加购车
2、如果将重复的物品累计到一起(如我购买了一瓶洗发水,我再购买一瓶就要累积到2)
3、如何实时的和数据库交互判断库存是否充足。(使用ajax)
其实全部的操作都是使用了ajax操作!
我们用Session["orders"]来存放购物车
来看获得购物车的方法:
/// <summary>
/// 获取购物车中的产品
/// author:jake
/// bt:080313
/// </summary>
/// <param name="pName">产品名称</param>
/// <param name="pId">产品ID</param>
/// <param name="mPrice">市场价格</param>
/// <param name="sPrice">事事旺价格</param>
/// <param name="pNum">产品数量</param>
/// <returns>购物车数组</returns>
/// 集合形式为:[产品ID,产品名称,市场价格,网站价格,数量]
/// session形式为:集合形式
public ArrayList getCart(string orders)
{
ArrayList cartal = new ArrayList();
if (Session["orders"] != null)
{
cartal = (ArrayList)Session["orders"];
}
else
{
cartal.Clear();
}
string[] ss = orders.Split(',');
if (cartal.Count == 0)
{
cartal.Add(orders);
}
else
{
bool r = false;
for (int i = 0; i < cartal.Count; i++)
{
string[] sc = cartal[i].ToString().Split(',');
if (ss[0].ToString() == sc[0].ToString()) //判断是否重复订单
{
sc[4] = Convert.ToString(int.Parse(sc[4].ToString()) + int.Parse(ss[4].ToString()));
cartal[i] = sc[0] + "," + sc[1] + "," + sc[2] + "," + sc[3] + "," + sc[4];
r = false;
break;
}
else
{
r = true;
}
}
if (r)
{
cartal.Add(orders);
}
}
return cartal;
}
/// 获取购物车中的产品
/// author:jake
/// bt:080313
/// </summary>
/// <param name="pName">产品名称</param>
/// <param name="pId">产品ID</param>
/// <param name="mPrice">市场价格</param>
/// <param name="sPrice">事事旺价格</param>
/// <param name="pNum">产品数量</param>
/// <returns>购物车数组</returns>
/// 集合形式为:[产品ID,产品名称,市场价格,网站价格,数量]
/// session形式为:集合形式
public ArrayList getCart(string orders)
{
ArrayList cartal = new ArrayList();
if (Session["orders"] != null)
{
cartal = (ArrayList)Session["orders"];
}
else
{
cartal.Clear();
}
string[] ss = orders.Split(',');
if (cartal.Count == 0)
{
cartal.Add(orders);
}
else
{
bool r = false;
for (int i = 0; i < cartal.Count; i++)
{
string[] sc = cartal[i].ToString().Split(',');
if (ss[0].ToString() == sc[0].ToString()) //判断是否重复订单
{
sc[4] = Convert.ToString(int.Parse(sc[4].ToString()) + int.Parse(ss[4].ToString()));
cartal[i] = sc[0] + "," + sc[1] + "," + sc[2] + "," + sc[3] + "," + sc[4];
r = false;
break;
}
else
{
r = true;
}
}
if (r)
{
cartal.Add(orders);
}
}
return cartal;
}