ECSHOP系统ajax更新购物车数量


  • |
  • 浏览:1852
  • |
  • 更新:2013-07-26 09:37

ajax更新购物车数量

方法/步骤

  • 先打开flow.dwt,找到
    <!-- {if $goods.goods_id gt 0 && $goods.is_gift eq 0 && $goods.parent_id eq 0} 普通商品可修改数量 -->,把下面的input框里面的替换成


    <a href="javascript:;" onclick="red_num({$goods.rec_id},{$goods.goods_id});"> - </a><input type="text" name="goods_number[{$goods.rec_id}]" id="goods_number_{$goods.rec_id}" value="{$goods.goods_number}" size="4" class="inputBg" style="text-align:center " onblur="change_price({$goods.rec_id},{$goods.goods_id})"/><a href="javascript:;" onclick='add_num({$goods.rec_id},{$goods.goods_id})' >+</a>

  • 然后在下一个</td>后加一段js代码

    <script type="text/javascript" charset="utf-8">

    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,changePriceResP**e,'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','JSON');

    }

    function change_price(rec_id,goods_id){

    var number = document.getElementById("goods_number_"+rec_id+"").value;

    //alert(number);

    Ajax.call('flow.PHP','JSON');

    }

    function changePriceResP**e(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>


  • 接着把下一行的

    <td align="right" bgcolor="#ffffff" >{$goods.subtotal}</td>

    替换为

    <td align="right" bgcolor="#ffffff" id="subtotal_{$goods.rec_id}">{$goods.subtotal}</td>



    找到{$shopping_money}和{$market_price_desc},分别替换为

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

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



  • //二次开发,ajax更新购物车

    elseif($_REQUEST['step']=='update_group_cart')

    {

    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));

    }

ECSHOP系统ajax更新购物车数量的更多相关文章

  1. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  2. ECSHOP中实现ajax弹窗登录功能

    本文主要给大家介绍在ecshop中实现ajax弹窗登录功能,代码简单易懂,非常不错,具有参考借鉴价值,需要的的朋友参考下

  3. PHP中仿制 ecshop验证码实例

    这篇文章主要介绍了PHP中仿制 ecshop验证码实例,非常不错,具有参考借鉴价值,需要的朋友可以参考下

  4. Ecshop 后台添加新功能栏目及管理权限设置教程

    这篇文章主要介绍了Ecshop 后台添加新功能栏目及管理权限设置教程,需要的朋友可以参考下

  5. ecshop3.6商品如何按照销量排序

    ecshop订单状态对应值:order_status有5中状态,并且当客户确认收货后,order_status的数值不一定是1也有可能是5。order_status = 0表示订单未确认order_s

  6. ECshop 迁移到 PHP7版本时遇到的兼容性问题

    最近有网友问我在php7上安装ecshopv2.7.3时,报错,究竟了半天没有找到原因,下面由脚本之家小编给大家分析此问题出现的原因

  7. ECSHOP完美解决Deprecated: preg_replace()报错的问题

    下面小编就为大家带来一篇ECSHOP完美解决Deprecated: preg_replace()报错的问题。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  8. ecshop退出登录会清空购物车的bug优化,最完美解决方法

    ecshop退出登陆后,会清空购物车,大家都应该知道有这样的勉强算bug的问题。 网上类似的教程相当多,但都有问题,说句不好听的,算是引新手入歧途!总结网上方法如下:1、修改init.php,把ses

  9. ecshop适应在PHP7的修改方法解决报错的实现

    下面小编就为大家带来一篇ecshop适应在PHP7的修改方法解决报错的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. ecshop添加菜单及权限分配问题

    ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。这篇文章主要介绍了ecshop添加菜单及权限分配,需要的朋友可以参考下

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部