2017-05-22 62 views
2

我正在使用codeigniter开发购物车。当我通过ajax发送数据给控制器时,它不起作用。这里是我的Ajax代码我使用 您可以检查我的演示ebsite在这下面的链接通过ajax向控制器发送数据不起作用

http://cableandmedia.com/ayurstore/products

$(".add_to_cart").click(function(event) { 
 

 
    var id=$(this).data('id'); 
 
    
 
    var qty=$("#item_"+id).val(); 
 
    
 
    
 
    $.ajax({ 
 
      type: 'POST', 
 
      url: '<?php echo base_url("ajax_controller/add_to_cart/'+id+'/'+qty+'")?>', 
 
      data: { id:id }, 
 
      success:function(response){ 
 
      $("#total_items").html(response); 
 
      $(".view_cart").click(); 
 
    } 
 
    });
<input type="number" value="1" id="item_<?php echo $row->product_id; ?>" /> 
 
<a id="edit_product" data-id="<?php echo $row->product_id; ?>" class="add_to_cart">Add to Cart</a>

当我警报(数量)和警报(id)我得到结果。 但我没有在我的ajax_controller中获取值。

这是我的控制器

public function add_to_cart($pid,$qty) 
 
\t { 
 
\t \t $this->load->model('product_model'); 
 
\t \t $query=$this->product_model->get_product($pid); 
 
\t \t 
 
\t \t foreach ($query->result() as $row) 
 
\t \t { 
 
    \t \t $name=$row->product_name; 
 
    \t \t $price=$row->price; 
 
    \t \t $img=$row->img_name; 
 
\t \t } 
 
\t \t 
 
\t \t 
 
\t \t \t $data = array(
 
       'id'  => $pid, 
 
       'qty'  => $qty, 
 
       'price' => $price, 
 
       'name' => $name, 
 
       'options' => array('Status' => 'New') 
 
      ); 
 

 
\t \t \t $this->cart->insert($data); 
 
\t \t \t 
 
\t \t \t echo count($this->cart->contents()); 
 
\t }
的PHP标签内

+0

请分享您的控制器代码'ajax_controller/add_to_cart' –

+0

请分享你的'ajax_controller'控制器代码@Yadhu巴布 –

+0

我的问题是,我需要GRT该产品ID和$数量在我的Ajax控制器 –

回答

2

缺少参数1 Ajax_controller :: add_to_cart()改变控制器代码是PHP错误是encounterd.So问题是与URL。产品ID和数量不会与url一起传递。请按照以下方式更改网址。

  <?php echo base_url("ajax_controller/add_to_cart/")?>"+id+"/"+qty 
2

变化AJAX网址 您正在使用Java脚本变量。

$(".add_to_cart").click(function(event) { 
 

 
    var id=$(this).data('id'); 
 
    
 
    var qty=$("#item_"+id).val(); 
 
    
 
    
 
    $.ajax({ 
 
      type: 'POST', 
 
      url: "<?php echo base_url('ajax_controller/add_to_cart/')?>"+id+"/"+qty, 
 
      data: { id:id }, 
 
      success:function(response){ 
 
      $("#total_items").html(response); 
 
      $(".view_cart").click(); 
 
    } 
 
    });
<input type="number" value="1" id="item_<?php echo $row->product_id; ?>" /> 
 
<a id="edit_product" data-id="<?php echo $row->product_id; ?>" class="add_to_cart">Add to Cart</a>

2

您是从作为阿贾克斯后传递值,因此尝试使用

在你在你控制器

阿贾克斯下面的代码

jQuery.ajax({ 
    type: "POST", 
    url: '<?php echo base_url("ajax_controller/add_to_cart")'?>, 
    dataType: 'json', 
    data: {id: id, qty: qty}, 
    success: function(res) 

写它来获得

$this->input->post('id'); 
$this->input->post('qty'); 
+1

缺少关闭双引号的网址错误:如果您在双引号内使用双引号,则需要转义双引号 – JYoThI

+0

在这一行中仍然有一个错字找到它自己url:'<?php echo BASE_URL( “ajax_controller/add_to_cart”)'?>, – JYoThI

2

$(".add_to_cart").click(function(event) { 
 

 
    var id=$(this).data('id'); 
 
    
 
    var qty=$("#item_"+id).val(); 
 
    
 
    
 
    $.ajax({ 
 
      type: 'POST', 
 
      url: '<?php echo base_url("ajax_controller/add_to_cart/")?>', 
 
      data: { pid:id,qty:qty }, 
 
      success:function(response){ 
 
      $("#total_items").html(response); 
 
      $(".view_cart").click(); 
 
    } 
 
    });
<input type="number" value="1" id="item_<?php echo $row->product_id; ?>" /> 
 
<a id="edit_product" data-id="<?php echo $row->product_id; ?>" class="add_to_cart">Add to Cart</a>

public function add_to_cart() 
{ 
    $pid = $this->input->post('pid'); 
    $qty = $this->input->post('qty'); 
    $this->load->model('product_model'); 
    $query=$this->product_model->get_product($pid); 

    foreach ($query->result() as $row) 
    { 
     $name=$row->product_name; 
     $price=$row->price; 
     $img=$row->img_name; 
    } 


     $data = array(
      'id'  => $pid, 
      'qty'  => $qty, 
      'price' => $price, 
      'name' => $name, 
      'options' => array('Status' => 'New') 
     ); 

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

     echo count($this->cart->contents()); 
} 
相关问题