Opencart - 即时更新购物车数量

时间:2016-01-01 10:46:53

标签: javascript ajax opencart

对于标准的opencart行为,在购物车中添加产品后,用户需要手动点击更新按钮以进行数量更新。有关示例,请参阅http://demo.opencart.com/。但是,我想更改为更改数量时,可以立即刷新购物车信息。我尝试过以下代码,但它不起作用:

  1. 对于catalog / view / theme / default / template / checkout / cart.tpl,我更新了:
  2.   

    按钮类型="提交"数据肘节="提示"标题="" class =" btn btn-primary">   我是=" fa fa-refresh"> / button>

    (不知道为什么我不能在上面的代码中正确粘贴代码。我已经删除了一些<使其显示)

    <button type="button" data-toggle="tooltip" title="<?php echo $button_update; ?>" class="btn btn-primary" onchange="cart.update('<?php echo $product['key']; ?>', '<?php echo $product['quantity']; ?>');"><i class="fa fa-refresh"></i></button>
    
    1. 在catalog / view / javascript / common.js
    2. 有一个功能

      var cart = {
        //skip some lines for other function
          'update': function(key, quantity) {
              $.ajax({
                  url: 'index.php?route=checkout/cart/edit',
                  type: 'post',
                  data: 'key=' + key + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1),
                  dataType: 'json',
                  beforeSend: function() {
                      $('#cart > button').button('loading');
                  },
                  complete: function() {
                      $('#cart > button').button('reset');
                  },          
                  success: function(json) {
                      // Need to set timeout otherwise it wont update the total
                      setTimeout(function () {
                          $('#cart > button').html('<img src="image/catalog/content/cart/quote-icon.png" alt="quote"><span class="badge badge-giftu rounded-x">' + json['totallines'] + '</span>');
                      }, 100);
      
                      if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
                          $('#cart > ul').load('index.php?route=common/cart/info ul li');
                      } else {
                          $('#cart > ul').load('index.php?route=common/cart/info ul li');
                      }
                  }
              });
          },
      }
      

      如果我在on.change函数下更改为cart.remove,我就试过了。但是,它对cart.udpate不起作用。有没有人知道触发ajax更新问题的问题是什么?

1 个答案:

答案 0 :(得分:-1)

我自己有这样的问题像这样解决了它

旧代码(我已自定义):

<input type="text" name="quantity[<?php echo $product['key']; ?>]" value="<?php echo $product['quantity']; ?>" size="1" class="form-control"/>
<span class="input-group-btn">
<button type="submit" data-toggle="tooltip" title="<?php echo $button_update; ?>" class="btn btn-primary"><i class="fa fa-refresh"></i></button>
<button type="button" data-toggle="tooltip" title="<?php echo $button_remove; ?>" class="btn btn-danger"
        onclick="cart.remove('<?php echo $product['key']; ?>');"><i class="fa fa-times-circle"></i></button>

新代码(已修复)查看输入和删除(按钮类型=&#34;按钮&#34;如果他也不起作用)

<input type="text" name="quantity[<?php echo $product['cart_id']; ?>]" value="<?php echo $product['quantity']; ?>" 
       size="1" class="form-control"/>
<span class="input-group-btn">
    <button type="submit" data-toggle="tooltip" title="<?php echo $button_update; ?>" 
            class="btn btn-primary"><i class="fa fa-refresh"></i></button>
    <button type="button" data-toggle="tooltip" title="<?php echo $button_remove; ?>" class="btn btn-danger"
            onclick="cart.remove('<?php echo $product['cart_id']; ?>');"><i class="fa fa-times-circle"></i></button>

有一个问题错误地给出了将键放入cart_id所必需的字段的注释