特效说明:
1:商城详情页点击购物按钮提示加入购物车并且在购物车无刷新增加数量
2:代码
html代码
<a href="javascript:addToCartNew({$goods.goods_id})" name="bi_addToCart" class="u-buy2">加入购物车</a> <a href="flow.php" class="btn" style="height:135px; padding-top:5px; color:#fff;" id="collectBox"> <i></i> 购<br/> 物<br/> 车<br/> <span style="margin-top:7px;" id="right_cart_show_num">{if $cartall_num}{$cartall_num}{else}0{/if}</span> </a> <div class="dropdown" id="J-flow-drop" style="opacity: 1; margin-right: 0px; display:none;"> <div class="empty-tip"> </div>
function addToCartNew(goodsId, parentId){ var goods = new Object(); var spec_arr = new Array(); var fittings_arr = new Array(); var number = 1; var formBuy = document.forms['ECS_FORMBUY']; var quick = 0; // 检查是否有商品规格 if (formBuy) { spec_arr = getSelectedAttributes(formBuy); if (formBuy.elements['number']) { number = formBuy.elements['number'].value; } quick = 1; } goods.quick = quick; goods.spec = spec_arr; goods.goods_id = goodsId; goods.number = number; var parent = (typeof(parentId) == "undefined") ? 0 : parseInt(parentId); var param="step=add_to_cart&quick="+quick+"&spec="+spec_arr+"&goods_id="+goodsId+"&number="+number+"&parent="+parent; var $cart = jQuery.noConflict(); $cart.ajax({ type:"post", url:"flow.php", dataType:"json", data:param, success: function(data){ if(window.location.href=="http://www.e1617.com/flow.html"){ window.location.href="flow.html"; }else{ var right_cart_show_num=$("#right_cart_show_num").html(); $cart("#right_cart_show_num").html(parseInt(right_cart_show_num)+1); changerightcart(); alert(data.fanhui); } } }) } /** * 获得选定的商品属性 */ function getSelectedAttributes(formBuy) { var spec_arr = new Array(); var j = 0; for (i = 0; i < formBuy.elements.length; i ++ ) { var prefix = formBuy.elements[i].name.substr(0, 5); if (prefix == 'spec_' && ( ((formBuy.elements[i].type == 'radio' || formBuy.elements[i].type == 'checkbox') && formBuy.elements[i].checked) || formBuy.elements[i].tagName == 'SELECT')) { spec_arr[j] = formBuy.elements[i].value; j++ ; } } return spec_arr; } function changerightcart(){ var rightcartparam="act=get_cart_list"; $.ajax({ type:"get", url:"get_user.php", data:rightcartparam, dataType:"json", success: function(data){ $(".empty-tip").html(data.fanhui); $("#right_cart_show_num").html(data.number); } }); }
php源码:
/*------------------------------------------------------ */ //-- 添加商品到购物车 /*------------------------------------------------------ */ if ($_REQUEST['step'] == 'add_to_cart') { $json=array(); $quick=$_POST['quick']; $spec=$_POST['spec']; $goods_id=$_POST['goods_id']; $number=$_POST['number']; $parent=$_POST['parent']; /* 检查:商品数量是否合法 */ if (!is_numeric($number) || intval($number) <= 0) { $json['fanhui']=$_LANG['invalid_number']; echo json_encode($json); exit; } /* 更新:购物车 */ else { //判断该商品是否已经添加到购物车过 $cartnum=$db->getRow("select count(*) as num from ".$GLOBALS['ecs']->table('cart')." where session_id='".SESS_ID."' and goods_id='$goods_id' and goods_attr_id='$spec'"); if($cartnum['num']==0){//没有购买过该产品则插入数据库 //当属性不为空时查询属性价格 if($spec!=""){ $spearr=explode(",",$spec); foreach($spearr as $key=>$value){ $speprice=$db->getRow("select attr_price from ".$ecs->table('goods_attr')." where goods_attr_id='".$value."'"); $attrprice=(int)$speprice['attr_price']; } } //查询商品信息 $goodsrow=$db->getRow("select goods_sn,goods_name,market_price,shop_price,supplier_id,is_promote,promote_start_date,promote_end_date,promote_price from ".$ecs->table('goods')." where goods_id ='".$goods_id."'"); if($goodsrow['is_promote']==1 & $goodsrow['promote_start_date']<=time() & $goodsrow['promote_end_date']>=time()){//判断该商品是否促销 //计算商品价格 if($attrprice!=""){ $goods_price=$attrprice; }else{ $goods_price=$goodsrow['promote_price']; } }else{ //计算商品价格 if($attrprice!=""){ $goods_price=$attrprice; }else{ $goods_price=$goodsrow['shop_price']; } } //插入数据库 $db->query("insert into ".$ecs->table('cart')." set user_id='".$_SESSION['user_id']."',session_id='".SESS_ID."',goods_id='$goods_id',goods_sn='".$goodsrow['goods_sn']."',goods_name='".$goodsrow['goods_name']."',goods_price='$goods_price',goods_number='$number',is_real='1',goods_attr_id='$spec',add_time='".time()."',suppliers_id='".$goodsrow['supplier_id']."'"); }else{//改变该产品的数量 $db->query("update ".$ecs->table('cart')." set goods_number=goods_number+1 where session_id='".SESS_ID."' and goods_id='$goods_id' and goods_attr_id='$spec'"); } $json['fanhui']="加入购物车成功"; echo json_encode($json); } exit; }
if($act =='get_cart_list'){ $json=array(); $num=$GLOBALS['db']->getRow("select SUM(goods_number) AS number from ".$GLOBALS['ecs']->table('cart')." where is_cart=0 and session_id='".SESS_ID."'"); $json['number']=$num['number']; $all=$GLOBALS['db']->getAll("select * from ".$GLOBALS['ecs']->table('cart')." where is_cart=0 and session_id='".SESS_ID."'"); if(!$all){ $json['fanhui']="<p><a href='flow.php' rel='nofollow'>您的购物车里什么都没有哦,再去看看吧</a></p>"; echo json_encode($json); exit; }else{ foreach($all as $row){ $cat = $GLOBALS['db']->getRow('SELECT url_defined FROM ' . $GLOBALS['ecs']->table('category') ." as c WHERE c.cat_id = '".$row['cat_id']."'"); $row['url'] = build_uri('goods', array('gid' => $row['goods_id'],'gcid' => $row['cat_id']), $cat['url_defined']); $json['fanhui'].="<a href='http://www.e1617.com/".$row['url']."'>".$row['goods_name']."</a><br/>"; } echo json_encode($json); exit; } }