通过ajax将数据发送到控制器无法正常工作

时间:2017-05-22 06:12:00

标签: ajax codeigniter

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

  

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();
     }
  });
&#13;
<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>
&#13;
&#13;
&#13;

当我发出警报(数量)和警报(身份证)时,我得到了结果。 但我没有在我的ajax_controller中获取值。

这是我的控制器

&#13;
&#13;
public function add_to_cart($pid,$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());
	}
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:3)

更改ajax网址 您正在使用php标记内的java脚本变量。

&#13;
&#13;
$(".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();
     }
  });
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:3)

您正在将值作为ajax传递给post,因此请尝试使用

在你的ajax

    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');

答案 2 :(得分:3)

$(".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());
}

答案 3 :(得分:3)

缺少Ajax_controller的参数1 :: add_to_cart()是遇到的php错误。所以问题在于url。产品ID和数量不会与url一起传递。所以更改网址如下。

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