当使用ajax在codeigniter中刷新页面时,插入到购物车中

时间:2015-02-10 10:08:50

标签: javascript php ajax codeigniter

我在codeigniter中使用ajax将项目添加到购物车中。 我的问题是当我刷新页面时购物车已更新。我有ajaxify它来防止页面刷新。但它没有发生。我的代码是正确的,没有错误。但仍然无法正常工作。 我的控制器代码是

public function add_to_cart()
  {
    $item_id = $this->input->post('item_id');
    $item_name = $this->input->post('item_name');
    $item_price = $this->input->post('item_price');
    $data = array(

                       'id'      => rand(5,1000),
                       'qty'     => 1,
                       'price'   => $item_price,
                       'name'    => $item_name,


            );

$this->cart->insert($data);

  }

我的观看代码是

    function insert()
{
var item_id=$("#item_id").val(); 
var item_name=$("#item_name").val();
var item_price=$("#item_price").val();
var dataString = "&item_id=" + item_id + "&item_name=" + item_name + "&item_price=" + item_price;
    $.ajax({  
        type: "POST",  
        url: "http://localhost/wah/cart_test/add_to_cart",  
        data: dataString,

        success: function()
        {
            alert('hello');
        }
    });
} 



   <form id="form">
                    <input type="hidden" id="item_id" name="item_id" value={{data.id}}> <input type="hidden" id="item_name" name="item_name" value={{data.item_name}}> <input type="hidden" id="item_price" name="item_price" value={{data.price}}>
                    <p><a href="#" onclick="insert()" class="btn btn-primary">Add to Cart</a></p>
                     </form>

2 个答案:

答案 0 :(得分:1)

购物车的概念是在会话中添加购物车数组 所以在重新加载页面之前,php不会感觉到变化

所以你必须用javascrip

附加表格
// in controller     
public function add_to_cart()
      {
        $item_id = $this->input->post('item_id');
        $item_name = $this->input->post('item_name');
        $item_price = $this->input->post('item_price');
        $data = array(

                           'id'      => rand(5,1000),
                           'qty'     => 1,
                           'price'   => $item_price,
                           'name'    => $item_name,


                );

        $this->cart->insert($data);
        echo json_encode($data) ;

          }




 // in your javascript 
     $.ajax({  
            type: "POST",  
            url: "http://localhost/wah/cart_test/add_to_cart",  
            data: dataString,



    success: function(data)
        {

         // just replace YOUR-TABLE-ID with table id 
         //and complete the tr you want to append

          var tr = "<tr><td>"+data.id+"</td><td>"+data.name+"</td></tr>";
          $("#YOUR-TABLE-ID tr:last").after(tr);
        }
            });

答案 1 :(得分:0)

尝试使用$ item_id而不是随机数时会发生什么:

$data = array(
    'id'      => $item_id,
    'qty'     => 1,
    'price'   => $item_price,
    'name'    => $item_name,
);