asp +js + cookies、实现简单购物车流程

来源:互联网 发布:红太阳软件 编辑:程序博客网 时间:2024/05/06 19:49

asp制作购物车的功能,实现方法有好多种一般都会用cookies,session,table等,各种方法都有各自的好处与不足,那就要看自己适用哪种了。这里我就用cookies。

1.加入购物车JS函数buy.js

     //writeCookie("cookie名称","产品ID","产品名称","产品数量",价格)
function writeCookie(name, ID, pro, num, pri)
{
var test=false;
var values="," + escape(ID) + "$" + escape(pro) + "$" + escape(num) + "$" + escape(pri);
var cookieValue = readCookie(name);
sss=cookieValue.split(",")
for (i=0;i<sss.length;i++){
s=sss[i].split("$");
for(j=0;j<s.length;j++){
if(s[0]==ID)
{
cookieValue=cookieValue.replace(","+sss[i],"");
nums=s[2];
test=true;
alert('你已经购买过此商品,将只在数量上添加!');
break;
}
}
}
if (test)
{
document.cookie = name + "=" + cookieValue+ "," + escape(ID) + "$" + escape(pro) + "$" + escape(parseInt(num)+parseInt(nums)) + "$" + escape(pri)+"; path=/";
test=false;
}
else
{
document.cookie = name + "=" + cookieValue+values+"; path=/";
alert ('购买成功');
}
}
function readCookie(name)
{
var cookieValue = "";
var search = name + "=";
if(document.cookie.length > 0)
{
offset = document.cookie.indexOf(search);
if (offset != -1)
{
offset += search.length;
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
cookieValue = document.cookie.substring(offset, end)
}
}
return cookieValue;
}

2.简单加入购物车方法:

<%if session("logname")<>"" then%><a href="#" onClick="writeCookie('<%=session("logname")%>','<%=rs("id")%>','<%=rs("title")%>',document.getElementById('pnumber').value,<%=rs("price")%>)"><img src="images/jiarugouwuche.jpg" width="97" height="26" border="0" /></a><%else%><a href="login.asp?returnurl=<%=geturlname()%>"><img src="images/jiarugouwuche.jpg" width="97" height="26" border="0" /></a><%end if%>  

判断是不是会员,如果是就可以加入购物车//writeCookie("cookie名称","产品ID","产品名称","产品数量",价格

 

3.购物车内容重新buy_cart.js

function readCookie(name)
{
var cookieValue = "";
var search = name + "=";
if(document.cookie.length > 0)
{
offset = document.cookie.indexOf(search);
if (offset != -1)
{
offset += search.length;
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
cookieValue = document.cookie.substring(offset, end)
}
}
return cookieValue;
}//readCookie(name)   此函数为返回已购买的所有内容,包括  物品ID,物品单价,物品名称,物品数量
function stringToInteger (inputString)
{
return parseInt(inputString);
}//stringToInteger(inputString)   返回由字符串(inputString)转换所得到的整数
function isNotaNumber (inputString)
{
return isNaN(inputString);
}//isNotaNumber(inputString)   返回一个 Boolean 值,指明inputString是否是保留值NaN(不是数字)
function UpdateCookie(name,Ids)
{
var buy_num=document.getElementById(Ids);
value=buy_num.value;
s=value.split("$");
value=escape(s[0])+"$"+escape(s[1])+"$"+escape(s[2])+"$"+escape(s[3])
var vvv="";
vvv=readCookie(name);//返回所有购买的内容
vvv=vvv.replace(','+value,"");//把要删除的内容和其前面的","一起置空
document.cookie = name + "=" + vvv+"; path=/";//再把新的内容写入cookie里面
location.reload();
}//UpdateCookie(name, value)   删除value这个内容
function ModifyCookie(name, valuex, ID, pro, num, pri)
{
var vvv="";
vvv=readCookie(name);//返回购买的所有内容,包括  物品ID,物品名称,物品数量,物品单价
s=valuex.split("$");
valuex=escape(s[0])+"$"+escape(s[1])+"$"+escape(s[2])+"$"+escape(s[3])
vvv=vvv.replace(','+valuex,"");//把要修改的内容去掉
document.cookie = name + "=" + vvv + "," + escape(ID) + "$" + escape(pro) + "$" + escape(num) + "$" + escape(pri)+"; path=/";//加上修改后得到的内容
location.reload();
//location.href='?';
}//ModifyCookie(name, valuex, ID, pro, num, pri)   修改内容,valuex为修改前的内容,value1-value4为修改后的内容
function clears(username)
{ var a=null;
document.cookie=username+"="+a+";path=/";
window.location.href='buy.asp';
}//清除COOKIE


4.物品清单:

  • <table height="76" border="0" cellpadding="0" cellspacing="0">  
  •                 <tr>  
  •                   <td width="46" align="center" valign="middle" class="hei14"  background="images/indl_27.jpg" style="border-top:#CCCCCC 1px solid; border-bottom:#CCCCCC 1px solid">序号</td>  
  •                   <td width="247" height="37" align="center" valign="middle" class="hei14"  background="images/indl_27.jpg" style="border-top:#CCCCCC 1px solid; border-bottom:#CCCCCC 1px solid">已购的产品</td>  
  •                   <td width="92" align="center" valign="middle" class="hei14"  background="images/indl_27.jpg" style="border-top:#CCCCCC 1px solid; border-bottom:#CCCCCC 1px solid">数量</td>  
  •                   <td width="96" align="center" valign="middle" class="hei14"  background="images/indl_27.jpg" style="border-top:#CCCCCC 1px solid; border-bottom:#CCCCCC 1px solid">单价</td>  
  •                   <td width="155" align="center" valign="middle" class="hei14"  background="images/indl_27.jpg" style="border-top:#CCCCCC 1px solid; border-bottom:#CCCCCC 1px solid">小计</td>  
  •                   <td width="157" align="center" valign="middle" class="hei14" background="images/indl_27.jpg" style="border-top:#CCCCCC 1px solid; border-bottom:#CCCCCC 1px solid">操作</td>  
  •                 </tr>  
  •                 <%   
  •             if session("logname")<>"" then   
  •             buylist=request.Cookies(session("logname"))'返回name为session("username")的cookie的内容   
  •             buylist=replace(buylist,",null","")   
  •             buylist_v=split(buylist,",")'用","把他们分开   
  •                
  •             for x=1 to ubound(buylist_v)'ubound 返回在buylist_v数组最大的维数,VBS数组下标为0(开始)   
  •                 if buylist_v(x)<>"" and buylist_v(x)<>"null" then'判断第x购物内容是否为空   
  •                    
  •                 buylist_v_v=split(buylist_v(x),"$")'buylist_v_v为第一组数,即第x次购物的内容   
  •                 buylist_vbuylist_v_x=buylist_v(x)'buylist_v_x为第x次购物的内容,与buylist_v(x)同   
  •                    
  •                     if(ubound(buylist_v_v))<3 then   
  •                     response.write("<script>alert('出现错误');document.cookie="""&session("logname")&"""+"""=""";location.href='?';</script>")   
  •                     response.End()   
  •                     end if   
  •                     ProID=buylist_v_v(0)'有四个内容读四次,这个为 物品ID   
  •                     ProName=buylist_v_v(1)'这个为 物品名称   
  •                     ProNum=buylist_v_v(2)'这个为 物品数量   
  •                     ProPrice=buylist_v_v(3)'这个为 物品单价   
  •                        
  •                     AllPriceAllPrice=AllPrice + (ProNum*ProPrice)   
  •         %>  
  •                 <tr>  
  •                   <td align="center" valign="middle" class="hei14"><%=x%><input type="hidden" name="ID_<%=x%>" id="ID_<%=x%>" value="<%=ProID%>" /></td>  
  •                   <td height="39" align="center" valign="middle" class="hei14"><%=ProName%><input type="hidden" name="buy_<%=x%>" id="buy_<%=x%>" value="<%=buylist_v(x)%>" /></td>  
  •                   <td align="center" valign="middle" class="hei14"><input name="num_<%=x%>" type="text" onChange="if(isNotaNumber(this.value)==true){alert('请输入整数数字');this.value=1;}else{this.value=stringToInteger(this.value);};ModifyCookie('<%=session("logname")%>','<%=buylist_v(x)%>','<%=ProID%>','<%=ProName%>',this.value,'<%=ProPrice%>');" value="<%=ProNum%>" size="5" maxlength="5" /></td>  
  •                   <td align="center" valign="middle" class="hei14"&gt;¥<%=ProPrice%><input type="hidden" name="pri_<%=x%&gt;" id="pri_<%=x%>" value="<%=ProPrice%>" /></td>  
  •                   <td align="center" valign="middle" class="hei14"&gt;¥<span class="red"><%=ProPrice*ProNum%></span></td>  
  •                   <td align="center" valign="middle" class="hei14"><a href="#" onClick="UpdateCookie('<%=session("logname")%>','buy_<%=x%>');" class="black">删除</a></td>  
  •                 </tr>  
  •                 <%   
  •                 end if   
  •             next   
  •                
  •         end if   
  •         %>  
  •         <tr>  
  •             <td colspan="6" align="right" style="border-bottom:#CCCCCC 1px solid">商品总金额(不含运费):¥<span id="all" class="red"&gt;<%=AllPrice%></span>元 </td>  
  •           </tr>  
  •           <%if AllPrice>0 then%>  
  •           <tr>  
  •             <td colspan="4"><div class="buy_bt1"><a href="#" onClick="clears('<%=session("username")%>');">清空购物车</a></div>            </td>  
  •             <td><div class="buy_bt1"><a href="products.asp">再逛逛</a></div></td>  
  •             <td>  
  •             <div class="buy_bt2"><a href="saveorder.asp" >去结帐</a></div>  
  •             </td>  
  •           </tr>  
  •           <%end if%>  
  •             </table> 

  • 原创粉丝点击