Ecshop购物车Ajax数量添加减少

Stella981
• 阅读 560

修改文件:

1. flow.dwt 模板, 

2. flow.php 

首先

第一步 :

修改购物车模板:

添加 数量减少/增加 按钮(这里用的span),input文本框按照下边参数设置好。

<div class="zz fl">
    <span onclick="red_num({$goods.rec_id},{$goods.goods_id});">-</span>
    <input type="text" name="goods_number[{$goods.rec_id}]" class="input2" value="{$goods.goods_number}" id="goods_number_{$goods.rec_id}"  onchange="change_price({$goods.rec_id},{$goods.goods_id})" />
    <span onclick="add_num({$goods.rec_id},{$goods.goods_id})">+</span>
</div>

第二步:

模板文件添加JS

<script type="text/javascript">
                        function add_num(rec_id,goods_id)
                        {
                            document.getElementById("goods_number_"+rec_id+"").value++;
                            var number = document.getElementById("goods_number_"+rec_id+"").value++;
                            
                            Ajax.call('flow.php', 'step=update_group_cart&rec_id=' + rec_id+'&number=' + number+'&goods_id=' + goods_id, changePriceRespone, 'GET', 'JSON');
                        }
                        function red_num(rec_id,goods_id)
                        {
                            if (document.getElementById("goods_number_"+rec_id+"").value>1)
                            {
                                document.getElementById("goods_number_"+rec_id+"").value--;
                            }
                            var number = document.getElementById("goods_number_"+rec_id+"").value;
                            Ajax.call('flow.php', 'step=update_group_cart&rec_id=' + rec_id+'&number=' + number+'&goods_id=' + goods_id, changePriceRespone, 'GET', 'JSON');
                        }
                        function change_price(rec_id,goods_id)
                        {
                            var number = document.getElementById("goods_number_"+rec_id+"").value;
                            Ajax.call('flow.php','step=update_group_cart&rec_id=' + rec_id+'&number=' + number+'&goods_id=' + goods_id, changePriceRespone, 'GET', 'JSON');
                        }
                        function changePriceRespone(result)
                        {
                            if(result.error == 1)
                            {
                                alert(result.content);
                                document.getElementById("goods_number_"+result.rec_id+"").value = result.number;
                            }else{
                                
                                document.getElementById('subtotal_'+result.rec_id).innerHTML = result.subtotal;//商品总价
                                document.getElementById('cart_amount_desc').innerHTML = result.cart_amount_desc;//购物车商品总价说明
                                document.getElementById('market_amount_desc').innerHTML = result.market_amount_desc;//购物车商品总市价说明
                            }
                        }
                        </script>

顺便模板文件数量、价格计算添加ID

<span id="subtotal_{$goods.rec_id}">{$goods.subtotal}</span>

<span id="cart_amount_desc">{$shopping_money}</span>

<span id="market_amount_desc">{$market_price_desc}</span>

第三步:

修改php文件

搜索:$_REQUEST['step'] == 'consignee' 在上方添加

elseif($_REQUEST['step']=='update_group_cart')
{
    //2016-05-24 cart_update
    include_once('includes/cls_json.php');
    $result = array('error' => 0, 'message' => '', 'content' => '', 'goods_id' => '');
    $json = new JSON;
    $rec_id = $_GET['rec_id'];
    $number = $_GET['number'];
    $goods_id = $_GET['goods_id'];
    $result['rec_id'] = $rec_id;
    if ($GLOBALS['_CFG']['use_storage'] == 1)
    {
        $goods_number = $GLOBALS['db']->getOne("select goods_number from ".$GLOBALS['ecs']->table('goods')." where goods_id='$goods_id'");
        if($number>$goods_number)
        {
            $result['error'] = '1';
            $result['content'] ='对不起,您选择的数量超出库存您最多可购买'.$goods_number."件";
            $result['number']=$goods_number;
            die($json->encode($result));
        }
    }
    $sql = "UPDATE " . $GLOBALS['ecs']->table('cart') . " SET goods_number = '$number' WHERE rec_id = $rec_id";
    $GLOBALS['db']->query($sql);
    /* 取得商品列表,计算合计 */
    $cart_goods = get_cart_goods();
    $subtotal = $GLOBALS['db']->getONE("select goods_price * goods_number AS subtotal from ".$GLOBALS['ecs']->table('cart')." where rec_id = $rec_id");
    $result['subtotal'] = price_format($subtotal, false);
    $result['cart_amount_desc'] = sprintf($_LANG['shopping_money'],$cart_goods['total']['goods_price']);
    $result['market_amount_desc'] = sprintf($_LANG['than_market_price'],$cart_goods['total']['market_price'],$cart_goods['total']['saving'],$cart_goods['total']['save_rate']);
    
    die($json->encode($result));
}

到这里完成Ajax异步数量增减!!!

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
thinkphp3.2.3模板渲染支持三元表达式
thinkphp3.2.3模板渲染支持三元表达式{$status?'正常':'错误'}{$info'status'?$info'msg':$info'error'}注意:三元运算符中暂时不支持点语法。如下:           <divclass"modalhidefade"id'myModa
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这