ajax更新购物车数量

2016-07-07 15:01 来源:www.chinab4c.com 作者:ecshop专家

把我最近写的一个代码贴出来可以参考 但不一定适用。


一、首先我把这个输入框的代码贴出来
  1. <INPUT class="input-text f-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">
复制代码

二、次页面加入的javascript 也就是changeprice函数

  1. <script>
  2. /**
  3. * 点选可选属性或改变数量时修改商品价格的函数
  4. */
  5. function changePrice(number,rec_id)
  6. {
  7. //v//ar attr = getSelectedAttributes(document.forms['ECS_FORMBUY']);
  8. // var qty = document.forms['ECS_FORMBUY'].elements['number'].value;

  9. Ajax.call('flow.php', 'step=update_group_cart&rec_id=' + rec_id +'&number=' + number, changePriceResponse, 'GET', 'JSON');
  10. }
  11. /**
  12. * 接收返回的信息
  13. */
  14. function changePriceResponse(res)
  15. {
  16. if (res.error > 0)
  17. {
  18. document.getElementById('sysmsg_error').innerHTML = res.content;
  19. document.all.sysmsg_error.style.display='';
  20. }
  21. else
  22. {
  23. if(document.all.sysmsg_error.style.display=='')
  24. {
  25. document.all.sysmsg_error.style.display='none';
  26. }
  27. document.getElementById('subtotal_'+res.rec_id).innerHTML = res.subtotal;//商品总价
  28. document.getElementById('cart_amount').innerHTML = res.cart_amount;//购物车团购商品价

  29. }
  30. }
  31. </script>
  32. <script>
  33. /**
  34. * 点选可选属性或改变数量时修改商品价格的函数
  35. */
  36. function changePrice(number,rec_id)
  37. {
  38. //v//ar attr = getSelectedAttributes(document.forms['ECS_FORMBUY']);
  39. // var qty = document.forms['ECS_FORMBUY'].elements['number'].value;

  40. Ajax.call('flow.php', 'step=update_group_cart&rec_id=' + rec_id +'&number=' + number, changePriceResponse, 'GET', 'JSON');
  41. }
  42. /**
  43. * 接收返回的信息
  44. */
  45. function changePriceResponse(res)
  46. {
  47. if (res.error > 0)
  48. {
  49. document.getElementById('sysmsg_error').innerHTML = res.content;
  50. document.all.sysmsg_error.style.display='';
  51. }
  52. else
  53. {
  54. if(document.all.sysmsg_error.style.display=='')
  55. {
  56. document.all.sysmsg_error.style.display='none';
  57. }
  58. document.getElementById('subtotal_'+res.rec_id).innerHTML = res.subtotal;//商品总价
  59. document.getElementById('cart_amount').innerHTML = res.cart_amount;//购物车团购商品价

  60. }
  61. }
  62. </script>
复制代码


然后我把请求的php处理程序也贴出来


  1. elseif($_REQUEST['step'] == 'update_group_cart')
  2. {
  3. /*------------------------------------------------------ */
  4. //-- 西安php服务中心团购更新购物车
  5. /*------------------------------------------------------ */
  6. include_once('includes/cls_json.php');
  7. $json = new JSON();
  8. $result = array('error' => '', 'content' => '');
  9. $rec_id = $_GET['rec_id'];
  10. $number = $_GET['number'];

  11. /*取的团购信息*/
  12. $group_buy = group_buy_info($_SESSION['extension_id'], $number);

  13. /*判断输入是否合法*/
  14. if(!is_numeric($number))
  15. {
  16. $result['error'] = '1';
  17. $result['content'] ='请输入合法数量';
  18. die($json->encode($result));

  19. }
  20. if ($group_buy['restrict_amount'] > 0 && $number > ($group_buy['restrict_amount'] - $group_buy['valid_goods']))
  21. {
  22. $result['error'] = '1';
  23. $restrict_amount =$group_buy['restrict_amount'] - $group_buy['valid_goods'];
  24. $result['content'] ='您最多可买'.$restrict_amount.'件';
  25. die($json->encode($result));
  26. }
  27. $sql = "UPDATE " . $GLOBALS['ecs']->table('cart') . " SET goods_number = '$number' WHERE rec_id = $rec_id";
  28. $GLOBALS['db']->query($sql);
  29. /*计算此订单总价*/
  30. $subtotal = $GLOBALS['db']->getONE("select goods_price * goods_number AS subtotal from ".$GLOBALS['ecs']->table('cart')." where rec_id = $rec_id");
  31. /*购物车团购商品总金额*/
  32. $cart_amount = cart_amount('',$_SESSION['flow_type']);
  33. $result['subtotal'] = price_format($subtotal, false);
  34. $result['cart_amount'] = price_format($cart_amount, false);
  35. $result['rec_id'] = $rec_id;
  36. die($json->encode($result));
  37. }
复制代码


有关ajax在ecshop的应用分析 我有发过帖子大家自己去找一下。

回答:
有可以用ajax无刷新购物车的吗?顶你!

楼主是好人,帮顶

很早就有共享了 不过还是支持一下!



应该是可以的。

帮顶下。

谢谢 同顶

顶下^

呵呵,看一下

支持,谢谢!

能使用吗?先谢谢了。