在ajax调用上重新加载cart div笨

时间:2015-03-16 09:50:16

标签: javascript php jquery ajax 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); 
    }

1 个答案:

答案 0 :(得分:0)

你说你隐藏了#myCart。但是fadeIn()并没有取消隐藏它。 以下是jQuery fadeIn文档的一部分。

.fadeIn()方法可以设置匹配元素的不透明度。它与.fadeTo()方法类似,但该方法不会取消隐藏元素并可以指定最终的不透明度级别。

也许有帮助。