推56论坛

 找回密码
 立即注册(限中文)

QQ登录

只需一步,快速开始

    查看: 268|回复: 0

    [ECshop教程] 通过AJAX方式动态更新ecshop购物车页面的商品数量

      [复制链接]
    发表于 2018-4-28 18:58:12 | 显示全部楼层 |阅读模式
    每次用户进入ecshop购物流程的时候当需要更改购物车里的商品数量的时候必须要手动点击更新按钮,
    这是非常糟糕的用户体验,我们有必要去改进这一点。
    以下是通过AJAX方式来动态更新ECShop购物车页面商品数量的解决办法
    一、前端页面部分(flow.dwt)
    在商品数量的input框添加对应的js函数
    <INPUT  onblur=”changePrice(document.getElementById
    (‘goods_number_{$goods.rec_id}’).value,{$goods.rec_id})” name=”goods_number
    [{$goods.rec_id}]” id=”goods_number_{$goods.rec_id}” value=”{$goods.goods_number}”  id=”ECS_FORMBUY”>
    在文件最后添加一段js

    <script type=”text/javascript”>
    function changePrice(number,rec_id)
    {
      var attr = getSelectedAttributes(document.forms['ECS_FORMBUY']);
      var qty = document.forms['ECS_FORMBUY'].elements['number'].value;

       Ajax.call(‘flow.php’, ‘step=update_group_
    cart&rec_id=’ + rec_id +’&number=’ + number, changePriceResponse, ‘GET’, ‘JSON’);
    }
    function changePriceResponse(res)
    {
      if (res.error > 0)
      {
        document.getElementById(‘sysmsg_error’).innerHTML = res.content;
        document.all.sysmsg_error.style.display=”;
      }
      else
      {
        if(document.all.sysmsg_error.style.display==”)
      {
       document.all.sysmsg_error.style.display=’none’;
      }
    document.getElementById(‘subtotal_’+res.rec_id).innerHTML = res.subtotal;
    document.getElementById(‘cart_amount’).innerHTML = res.cart_amount;
      }
    }
    </script>

    二、在flow.php文件中插入对应的处理代码:
    elseif($_REQUEST['step'] == ‘update_group_cart’)
    {
    include_once(‘includes/cls_json.php’);
    $json = new JSON();
    $result = array(‘error’ => ”, ‘content’ => ”);
    $rec_id = $_GET['rec_id'];
    $number = $_GET['number'];
    $group_buy = group_buy_info($_SESSION['extension_id'], $number);
    if(!is_numeric($number))
    {
    $result['error'] = ’1′;
    $result['content'] =’请输入合法数量’;
    die($json->encode($result));
    }
    if ($group_buy['restrict_amount'] > 0 && $number >
    ($group_buy['restrict_amount'] – $group_buy['valid_goods']))
    {
    $result['error'] = ’1′;
    $restrict_amount =  $group_buy['restrict_amount'] – $group_buy['valid_goods'];
    $result['content'] =’您最多可买’.$restrict_amount.’件’;
    die($json->encode($result));
    }
    $sql = “UPDATE ” . $GLOBALS['ecs']->table(‘cart’) . ” SET goods_number = ‘$number’ WHERE rec_id = $rec_id”;
    $GLOBALS['db']->query($sql);
    $subtotal = $GLOBALS['db']->getONE(“select goods_price *
    goods_number AS subtotal from “.$GLOBALS['ecs']->table(‘cart’).” where rec_id = $rec_id”);
    $cart_amount = cart_amount(”,$_SESSION['flow_type']);
    $result['subtotal'] = price_format($subtotal, false);
    $result['cart_amount'] = price_format($cart_amount, false);
    $result['rec_id'] = $rec_id;
    die($json->encode($result));
    }

    还等什么?马上清空echsop的缓存刷新页面看看效果吧。

    学建站、学推广、学赚钱,上56站长论坛就够了!个性签名请到个人资料里面修改……

    本版积分规则

    关闭

    推56站长论坛推荐上一条 /2 下一条

    站长QQ
    在线咨询
    咨询热线
    QQ:405327411
    站长

    QQ|广告合作|关于我们|联系我们|免责声明|网站导航|站长论坛 ( 豫ICP备11018337号-5

    王宝臣旗下网站 推56论坛(www.tui56.com|ask.tui56.com|blog.tui56.com|daohang.tui56.com)

    Powered by Discuz! X3.4 Licensed

    ©2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表