繁体   English   中英

在ajax调用上重新加载购物车div | 点火枪

[英]reload cart div on ajax call | Codeigniter

在我的页面中,有添加到购物车功能,并且我用ajax发布了购物车表格。

$(document).ready(function(e) {
    $('.toCart').click(function (e) {

        e.preventDefault();

        var id = $(this).closest('.hidden').find('.idHid').text(); 

        $.ajax({
            type: "POST",
            data:'id='+id,
            url: '<?php echo site_url('cart/added/');?>',
            success: function(respond)
                {
                    //window.alert(respond); 
                    $('#myCart').fadeIn();
                    $('#myCart').delay(5000).fadeOut('slow');
                }
        });
        return false; 
    });
});

购物车div的ID是#myCart ,我尝试隐藏此div,以便仅在用户插入或更新新购物车时才显示。 一切正常,直到这里。

但是问题是,每当我添加新购物车时,购物车淡入时都不会更新。如果仅重新加载页面,购物车便会更新。

我什至分开购物车视图:

cart.php:

    <!--My Cart-->
    <div id="myCart">
        <table border="1">
            <thead>
                <td>No</td>
                <td>Name</td>
                <td>Price</td>
                <td>Qty</td>
                <td>Sub Total</td>
            </thead>
        <?php 

            if($cart = $this->cart->contents())
                {   
                    $i=0;
                    foreach ($cart as $item)
                        {   
                            $i++;
                            echo "<tr>"; 
                                echo "<td>".$i."</td>"; 
                                echo "<td>".$item['name']."</td>"; 
                                echo "<td>".$item['price']."</td>"; 
                                echo "<td>".$item['qty']."</td>"; 
                                echo "<td>".$item['qty']."</td>"; 
                            echo "</tr>"; 
                        }
                }
        ?>
        </table>
    </div>
    <!--My Cart-->

请问有人可以帮忙吗?

这是购物车的控制器:

function added()
    {
        $this->load->model('site_model');

        $product = $this->site_model->getCart($this->input->post('id')); 

        $bag = $this->cart->contents();

        $flag = TRUE;

        foreach ($bag as $item) 
            {                               
                if ($item['id'] == $this->input->post('id'))
                        { 
                            $data = array('rowid'=>$item['rowid'],'qty'=>++$item['qty']);
                            $this->cart->update($data);
                            $flag = FALSE;
                            echo "Cart is update";                          
                            $this->load->view('templates/cart', $data); 
                        }       
            }

        if($flag)
            {
                $cart = array (
                    'id' => $this->input->post('id'), 
                    'qty' => 1, 
                    'price' => $product->price,
                    'name' =>  $product->name
                );
                $echi = $this->cart->insert($cart);  
                echo "New Cart is added";                           
                $this->load->view('templates/cart', $cart); 
            }

        //print_r ($echi); 
    }

您说您已经隐藏了#myCart。 但是fadeIn()不会取消隐藏它。 这是jQuery fadeIn文档的一部分。

.fadeIn()方法可对匹配元素的不透明度进行动画处理。 它与.fadeTo()方法类似,但是该方法不会取消隐藏元素,并且可以指定最终的不透明度级别。

也许有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM