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

每次用户进入ecshop购物流程的时候当需要更改购物车里的商品数量的时候必须要手动点击更新按钮,这是非常糟糕的用户体验,我们有必要去改进这一点。 以下是通过AJAX方式来动态更新ECShop购物车页面商品数量的解决办法 一、前端页面部分(flow.dwt) 在商品数量
每次用户进入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的缓存刷新页面看看效果吧。
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

{if $category eq 2} :这个表示当前栏目ID等于2时,注意2是有双引号包围的哦。这个可以放在栏目模板页,用来判断栏目ID。 {if $goods.cat_id eq 2} :这个表示当前产品属于栏目ID2时。可以放在产品模板页,用来判断产品的栏目ID。 {if $goods.goods_id eq 2
ecshop购物流程中支付方式描述不换行的方法 打开 /themes/模板文件夹/flow.dwt 文件 找到 {$payment.pay_desc} 修改为 {$payment.pay_desc|nl2br} 找到 {$order.pay_desc} 修改为 {$order.pay_desc|nl2br}
要删除ecshop配送方式和支付方式。如何操作呢。首先我们必须修改ecshop购物车js.然后修改flow.php购物车php.通过双向修改。处理flow.dwt.可以让ecshop购买流程更加简化。以下是代码思路. 1:js/shopping_flow.js函数 checkOrderForm(frm) 修改成以下 functio
ecshop的搜索其实是功能十分强大的,但是ecshop搜索功能前台和后台还不大一样,前台主要是通过get方式,提交的url进行分页,而在ecshop的后台,则是接受表单的搜索条件,然后通过js发布到ajax.最后又通过ecshop的ajax将结果返回.然后在显示最后的搜索结果. 我们来
故障描述:安装了微信插件后,无法绑定微信号、无法登陆、无法通过扫描登陆微社区。 适用版本:Discuz!X3.1-X3.2 插件版本:微信登录 1.0.1 故障解决方法: 1.后台 应用 插件 启用微信插件(没安装先装) 2.先开通微社区 3.点击 微信设置 注意:对于没有认证
我们现在要简化怎么办? 找到 /source/module/forum/forum_viewthread.php 代码如下: $navtitle = get_title_page($_G[forum_thread][subject], $_G[page]). .strip_tags($_G[forum][name]); get_title_page($_G[forum_thread][subject], $_G[page]) 这个呢