asp+ajax版的购物车

11 篇文章 0 订阅
<!--#include file="conn.asp" -->
<!--#include file="inc/cart.asp" -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>购物车-<%= sitename %></title>
<link href="css/css.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/cart.js"></script>
</head>

<body>
	<!--#include file="top.asp" -->
<div class="gouwuche">
    <div class="gouwuchebt">我的购物车</div>
    <div class="gouwutopD2"><table width="100%" border="0" cellspacing="1" cellpadding="0" style="background:#f0f0f0; margin-top:15px;">
  <tr>
    <td width="5%" height="40" align="center" bgcolor="#f7f7f7"><strong>选项</strong></td>
    <td width="9%" align="center" bgcolor="#f7f7f7"> </td>
    <td width="53%" align="center" bgcolor="#f7f7f7"><strong>商品信息</strong></td>
    <td width="8%" align="center" bgcolor="#f7f7f7"><strong>单价(元)</strong></td>
    <td width="9%" align="center" bgcolor="#F7F7F7"><strong>数量</strong></td>
    <td width="8%" align="center" bgcolor="#F7F7F7"><strong>金额</strong></td>
    <td width="8%" align="center" bgcolor="#F7F7F7"><strong>操作</strong></td>
  </tr>
  <%
  dim proId,act,qty,k,rs
  act=Request.QueryString("act")
  proId=Request.QueryString("proId")
  qty=Request.QueryString("qty")
  if act<>"" then
	  If uCart.CheckItem(proId)=False Then
		set rs = Server.CreateObject("adodb.recordset")
		rs.open "select productName,discount_price,pic from Product where id="&proId,conn,1,1
		if not rs.eof then
			call uCart.AddItem(proId,rs("productname"),rs("discount_price"),0,0,qty,rs("pic"))
		end if
		rs.close
		set rs=nothing
	  else
		call uCart.ModifItem(proId,qty,2)
	  end if
  end if
  if uCart.CheckEmtpy=False Then
	myCart=uCart.ViewCart()
	k=0
	For i=LBound(myCart,2) To UBound(myCart,2)
		If myCart(0,i)<>"" Then '以前的判断语句
  %>
  <tr rel="<%=myCart(0,i)%>">
    <td height="35" align="center" bgcolor="#FFFFFF" class="td1"><input type="checkbox" class="btn_checkbox product_select  check-product cur" checked="checked" /></td>
    <td  align="center" bgcolor="#FFFFFF" class="ww td2"><a href="prolast.asp?id=<%=myCart(0,i)%>"><img src="<%=myCart(6,i)%>" /></a></td>
    <td bgcolor="#FFFFFF" class="ww td3"><a href="prolast.asp?id=<%=myCart(0,i)%>"><%=myCart(1,i)%></a></td>
    <td align="center" bgcolor="#FFFFFF" class="td4"><span class="c_red" value="<%=myCart(2,i)%>">¥<%=FormatNumber(myCart(2,i),2,-1)%></span></td>
    <td align="center" bgcolor="#FFFFFF" class="td5"><img src="images/jianhao.jpg" class="minusNum" style="cursor:pointer;" />
      <input name="pro_num" type="text"  class="input6" value="<%= myCart(5,i) %>" />
      <img src="images/jiahao.jpg" class="addNum" style="cursor:pointer;" /></td>
    <td align="center" bgcolor="#FFFFFF" class="td6"><p>¥<%=FormatNumber(myCart(5,i)*myCart(2,i),2,-1)%></p></td>
    <td align="center" bgcolor="#FFFFFF" class="td7"><a href="javascript:;" class="do_delete">删除</a></td>
  </tr>
<%
			k=k+1
		end if
	Next
	myprice=uCart.TPrice()
  else
    Response.Write("<td colspan='7' align='center' height='32'>暂无购买商品,请继续 <a href='product.asp' style='color:red'>购物</a></td>")
  end if
%>
  </table>
  <table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin-top:15px;">
  <tr>
    <td width="25%" height="45" bgcolor="#f2f2f2">
      <input type="checkbox" class="btn_checkbox check-all cur" checked="checked" /> 全选
                        <a href="javascript:;" class="CartNum"><%= k %></a>
                        <a href="javascript:;">件</a></td>
    <td width="62%" align="right" bgcolor="#f2f2f2" class="gouwu14">商品总价(不含运费和优惠扣减):<strong id="totalPrice"> 
                            <span class="total_pri_blod">¥<%
			  if uCart.CheckEmtpy then
			  	 Response.Write(0)
			  else
			     Response.Write(FormatNumber(myprice(0),2,-1)) 
			  end if 
					%></span>
                        </strong></td>
    <td width="13%" bgcolor="#f2f2f2">
    	<div class="jiesuan7"><strong><a href="javascript:;" id="settlement">结 算</a></strong></div>
    </td>
  </tr>
</table>

</div>
	  <div class="clear"></div>
    </div>
	<!--#include file="bottom.asp" -->
</body>
</html>

cart.js

$(function(){
//getTotalPrice();
//手动修改商品数量
var regNum = /^\d+$/;
$(".changeNum").unbind("blur").bind("blur", function () {
   var obj =  $(this);
   var product_num = obj.val();
   if(regNum.test(product_num) && product_num > 0){
       var buy = parseInt($(this).data("buy"));
       product_num = parseInt(product_num);
       changeProductNum(obj, product_num - buy,'input');
   }else{
       alert("商品数量格式不正确");
       $(this).val($(this).data("buy"));
       return;
   }
});

//增加商品数量
$('.addNum').unbind("click").bind("click", function () {
    var obj =  $(this);
    changeProductNum(obj, 1, 'add');
});

//减少商品数量
$('.minusNum').unbind("click").bind("click", function () {
    var obj =  $(this);
    var $itemNum = $(this).closest("tr").find("input[name='pro_num']").val();
    if(parseInt($itemNum) > 1){
        changeProductNum(obj, -1, 'add');
    }
});

//删除商品 展示弹框
$('.btn_del').click(function(){
    $(this).next().show();
    var url = $(this).attr('href');
});
//取消删除商品
$(".reset_delete").unbind("click").bind("click", function () {
    $(this).parents(".pop_box").hide();
});
//执行删除商品
$(".do_delete").unbind("click").bind("click", function () {
    //$(this).parents(".pop_box").hide();
    var parent = $(this).parents('tr');
	parent.remove();
	getTotalPrice();
});
//批量删除购物车商品
$('#del-all').click(function(){
    var product_id=[];
    $('.product_select').each(function(index,element){
        if($(this).prop("checked")){
            product_id.push($(this).closest("tr").attr('rel'));
        }
    });
    if(product_id.length == 0){
        alert('请先选择商品');
        return false;
    }
    if(confirm("确认删除商品")){
        var del_confirm = function(product_id){
			$("tr[rel='"+product_id+"']").remove();
			getTotalPrice();
        };
        for(var i in product_id){
            del_confirm(product_id[i]);
        }   
        
    }
    return false;
});

//勾选计算

$('.check-product').unbind("click").bind("click", function () {
    $(this).toggleClass('cur');
    var tmp=$('.check-product');
    if(tmp.length==tmp.filter('.cur').length){
        $('.check-all').addClass('cur');
		$('.check-all').prop("checked",true);
    }else{
        $('.check-all').removeClass('cur');
		$('.check-all').prop("checked",false);
    }
    getTotalPrice();
	
});
//全选/全不选计算

$('.check-all').click(function(){
	$(this).toggleClass('cur');
    if($(this).hasClass('cur')){
        $('.check-product').addClass('cur');
        $('.check-all').addClass('cur');
		$('.check-product').prop("checked",true);
    }else{
        $('.check-product').removeClass('cur');
        $('.check-all').removeClass('cur');
		$('.check-product').prop("checked",false);
    }
    getTotalPrice();	
});

//结算
$("#settlement").click(function(e){
	e.stopPropagation();
	e.preventDefault();
	var product_ids=[],num_ids=[];
	$('.check-product').each(function(index,element){
		if($(this).prop('checked')){
			var $tr2=$(this).closest("tr");
			product_ids.push($tr2.attr("rel"));
			num_ids.push($tr2.find("input[name='pro_num']").val());
		}
	});
	if(product_ids.length < 1){
		alert("请选择商品");
		return ;
	}
	else{
		$.post("changeProductNum.asp",{"act":"settlement","productIds":product_ids.toString(),"numIds":num_ids.toString(),rnd:new Date().getTime()},function(msg){window.location.href='shop.asp';});
	}
});

});//the end of window.onload by quwei
function checkBtn(){
    var tmp=$('.check-product');
    if(tmp.length==tmp.filter('.cur').length){
        $('.check-all').addClass('cur');
    }else{
        $('.check-all').removeClass('cur');
    }
}
//商品数量变更
function changeProductNum(obj,inputVal,type){
    var $tr = obj.closest("tr"),product_id=$tr.attr("rel");
        var $itemNum = $tr.find("input[name='pro_num']");
        if($tr.size() > 0){
            $itemNum.val(parseInt($itemNum.val()) + inputVal);
            var itemPrice = parseFloat($tr.find("td.td4 .c_red").attr("value"));
            $tr.find("td.td6 p").text("¥ "+ (parseFloat($itemNum.val())*itemPrice).toFixed(2));
        }
        getTotalPrice();
}

//价格计算
function getTotalPrice(){
    var total_price = total_number = 0;
    $('.check-product').each(function(index,element){
        if($(this).prop('checked')){
            var $tr2=$(this).closest("tr");
            total_price += parseFloat($tr2.find("td.td4 .c_red").attr("value")) * parseInt($tr2.find("input[name='pro_num']").val());
            total_number += parseInt($tr2.find("input[name='pro_num']").val());
        }
    });
    if($(".CartNum").size() > 0)$(".CartNum").html(total_number);
    $('#totalPrice .total_pri_blod').html(total_price.toFixed(2));
}


changeProductNum.asp

<!--#include file="conn.asp" -->
<!--#include file="inc/cart.asp" -->
<%
dim act
act=Request.Form("act")

if act="settlement" then
	call order_settlement()
end if

sub order_settlement()
	productIds=Request.Form("productIds")
	numIds=Request.Form("numIds")
	uCart.RemoveAll()
	Set rs = Server.CreateObject("ADODB.Recordset")
	if InStr(productIds,",")>0 then
		arrPro=split(productIds,",")
		arrNum=split(numIds,",")
		For i=0 To UBound(arrPro)
			rs.open "select productName,discount_price,pic from Product where id="&arrPro(i),conn,1,1
			if not rs.eof then
				if uCart.CheckItem(arrPro(i))=False then
					call uCart.AddItem(arrPro(i),rs("productname"),rs("discount_price"),0,0,arrNum(i),rs("pic"))
				else
					call uCart.ModifItem(arrPro(i),arrNum(i),2)
				end if
			end if
			rs.close
		Next
	Else
		rs.Open "select productName,discount_price,pic from Product where id="&productIds,conn,1,1
		If Not rs.EOF Then
			if uCart.CheckItem(productIds)=False then
				call uCart.AddItem(productIds,rs("productname"),rs("discount_price"),0,0,numIds,rs("pic"))
			else
				call uCart.ModifItem(productIds,numIds,2)
			end if
		End If
		rs.Close
	End If
	Set rs=Nothing
end sub
closeconn
%>


cart.asp

<%
Class UserCart
    '建立购物车
    Sub CreateCart()
        Dim CFlag
        dim mCart(6,0)
        CFlag=CheckCart()
        if CFlag=false then
            For iCount =LBound(mCart,2) to UBound(mCart,2)
                mCart(0,iCount)=""
            next 
            Session("UserCart")=mCart
        end if 
    End Sub
    '检查购物车
    Public Function CheckCart()
        IF IsArray(Session("UserCart")) THEN
            CheckCart = true
        ELSE 
            CheckCart = false 
        END IF 
    End Function
    '检查购物车是否为空
    Function CheckEmtpy()
        dim mCart
        mCart=Session("UserCart")
        For i =LBound(mCart,2) to UBound(mCart,2)
            if mCart(0,i)<>"" then
                CheckEmtpy=false
                Exit Function
            end if
        next
        CheckEmtpy=True 
    End Function
    '添加商品
    Function AddItem(aID,aName,aPrice1,aPrice2,aPrice3,aCount,aImage)  '2008-12-25改进 by tommy 商品增加在最后
        dim mCart
        AddItem=false
        if CheckItem(aID)=false then
            '无此商品
            mCart=Session("UserCart")
            i =UBound(mCart,2)
            i=i+1
            Redim preserve mCart(6,i)
            mCart(0,i)=aID     'productID
            mCart(1,i)=aName   '产品名称
            mCart(2,i)=aPrice1 '产品原价
            mCart(3,i)=aPrice2 '会员价
            mCart(4,i)=aPrice3 'VIP价
            mCart(5,i)=aCount  '购买数量
            mCart(6,i)=aImage  '产品图片
            session("UserCart")=mCart
            AddItem=True
        Else
            '有此商品,则商品数量+1
            ModifItem aID,aCount,0
            AddItem=True
        End if
    End Function

    '删除商品数量
 Sub DelItem(mID)  '改进2008-12-25by tommy 增加删除商品过程
      dim mCart
	  'Response.Write(mID)
	  mCart = Session("UserCart")
	  mount=UBound(mCart,2)
	  If mID=mount Then
		 mount=mount-1
		 mCart(0,mount+1)=""
		 ReDim Preserve mCart(6,mount)
	  Else
		 mount=mount-1
		 For i=mID To mount
			 For j=0 To 6
				mCart(j,i)=mCart(j,i+1)
		     Next
		 Next
		 mCart(0,mount+1)=""
		 ReDim Preserve mCart(6,mount)
	  End If
      Session("UserCart")=mCart
 End Sub
 
    '修改商品数量 
    Sub ModifItem(mID,mCount,mFlag)
        'mFlag-标志 0-添加 1-删除,2-修改 3-清空
        'mID-商品ID
        'mCount-修改商品的数量
        dim mCart
        mCart = Session("UserCart")
        For i =LBound(mCart,2) to UBound(mCart,2)
            if mCart(0,i)=mID then
                select case mFlag
                case 1
                    mCart(0,i)=Int(mCart(5,i))-Int(mCount)
                case 0
                    mCart(5,i)= Int(mCart(5,i))+Int(mCount)
                case 2
                    if mCount=0 then
                        mCart(5,i)=0
                        mCart(0,i)=""
                    else
                        mCart(5,i)=mCount
                    end if
                case 3
                    mCart(5,i)=0
                    mCart(0,i)=""
                end select
                session("UserCart")=mCart
                exit Sub
            end if
        next 
    End Sub
    '查看推车
    Function ViewCart()
        dim mCart
        mCart=session("UserCart")
        ViewCart=mCart
    End Function
    '检查商品
    Function CheckItem(cID)
        dim mCart
        mCart =Session("UserCart")
        For i =LBound(mCart,2) to UBound(mCart,2)
            if mCart(0,i)=cID then
                CheckItem=True
                exit Function
            end if
        next 
        CheckItem=false
    End Function
    '清空购物车
    Sub RemoveAll()
        dim mCart
        mCart = Session("UserCart")
        For i =LBound(mCart,2) to UBound(mCart,2)
            mCart(0,i)=""
        next 
        Session("UserCart")=mCart
    End Sub 
    '商品总价值
    Function TPrice()
        dim mCart,i
        dim OutPrice(3)
        mCart=session("UserCart")
        for i=LBound(mCart,2) to UBound(mCart,2)
            if mCart(0,i)<>"" then 
                Outprice(0) = Int(Outprice(0)) + Int(mCart(2,i))*Int(mCart(5,i))
                Outprice(1) = Int(Outprice(1)) + Int(mCart(3,i))*Int(mCart(5,i))
                Outprice(2) = Int(Outprice(2)) + Int(mCart(4,i))*Int(mCart(5,i))
                Outprice(3) = Int(OutPrice(3)) + Int(mCart(5,i))
            end if
        next
        TPrice=OutPrice
    End Function
End Class
'=================================================
'建立购物车对象,该对象用于直接在程序中调用
'来自QQ:1984756933
'=================================================
Dim uCart
Set uCart= new UserCart
uCart.CreateCart()
%>


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用: 第1 '================================================= '建立购物车对象,该对象用于直接在程序中调用 '================================================= dim uCart set uCart= new UserCart 第二 建立一个购物车 uCart.CreateCart (可以重复建立,因为里面有IsArray判断。所以建议这句在建立购物车对象后必写) 第三 增加购物车里的商品,在客户端点了某产品后,服务器端处理的ASP文件中接受传过来的产品标志,并访问数据库。分别把AddItem(aID产品标 志如ID,aName产品名称,aPrice1产品价格一,如单价,aPrice2产品价格二如会员价,aPrice3产品价格三如金牌会员价,如果没这么多可以置空 或置0,aCount购买数量,一般是一个,多个的话后面可以用修改函数修改,aImage产品图片地址) 使用方法:aa=uCart.AddItem(aID产品标志如ID,aName产品名称,aPrice1产品价格一,如单价,aPrice2产品价格二如会员价,aPrice3产品价格 三如金牌会员价,如果没这么多可以置空或置0,aCount购买数量,一般是一个,多个的话后面可以用修改函数修改,aImage产品图片地址),返回 true表示成功,false表示失败 第四 增加了以后进如显示页面,就要用到查看购物车 mycart=uCart.ViewCart() For i =LBound(myCart,2) to UBound(myCart,2) if myCart(0,i)"" then myCart(0,i) '获取标号 myCart(1,i) '获取单价 。。。以此类推 end if next 第五 查看了,可以修改购物车,如更改数量等,或是删除其中的 call uCart.ModifItem(mID唯一标志号,mCount产品数量,mFlag-标志 0-添加 1-删除,2-修改 3-清空) '先用给后面参数赋值 修改其中的商品 可以用第四个显示,先接受session的值,然后循环修改 或清空购物车 uCart.RemoveAll() 然后结帐,很简单 myprice=uCart.TPrice() 然后myprice(0)是产品单价的总价格,myprice(1)是产品会员价的总价格,myprice(2)是高级会员的总价格,myprice(3)是产品总数量 将商品装入购物车,这时需要用cookie或session来做一个不同页面间传递的全局变量,也就是说关了浏览器(针对session)或清楚了cookie等原因,本次购物车会消失,就象你今天在商场买了一车的东西,最后没结帐,明天肯定没了,又归位了,当然要有特殊需要保存,可以写数据库!所以这里记录的只需要是该商品的相关信息就可以了,这里我们记录他的 物品ID, 物品单价, 物品名称, 物品数量

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值