使用ajax在codeigniter控制器中调用函数不起作用

Posted

技术标签:

【中文标题】使用ajax在codeigniter控制器中调用函数不起作用【英文标题】:calling function in codeigniter controller using ajax not working 【发布时间】:2021-12-29 04:39:10 【问题描述】:

我有一个codeigniter 网站,在那里我完成了添加到购物车功能,点击按钮后,页面重新加载后产品被添加到购物车中,这工作正常,我在控制器中执行了以下代码:

public function buy($id)
         
           $color= $this->input->post('color');
           $size=$this->input->post('size');
             $product = $this->product->find($id);
             $item = array(
                 'id' => $product->id,
                 'name' => $product->pname,
                 'quantity' => 1
             );
             if(!$this->session->has_userdata('cart')) 
                 $cart = array($item);
                 $this->session->set_userdata('cart', serialize($cart));
              else 
                 $index = $this->exists($id);
                 $cart = array_values(unserialize($this->session->userdata('cart')));
                 if($index == -1) 
                     array_push($cart, $item);
                     $this->session->set_userdata('cart', serialize($cart));
                  else 
                     // $cart[$index]['quantity']++;
                     // $this->session->set_userdata('cart', serialize($cart));
                     $this->session->set_flashdata("Error","Product Already In Cart !");

                     redirect($_SERVER['HTTP_REFERER']);
                 
             
             $this->session->set_flashdata("Success","Product Added To Cart Successfully !");

             redirect($_SERVER['HTTP_REFERER']);


         

现在我尝试使用ajax 调用此函数,以便将产品添加到购物车而无需重新加载页面。我做了以下代码:

$("#change").submit(function() 
  alert("Change");
  var id = $('#prod').val();
  $.ajax(
    type: 'POST',
    url: "<?php echo base_url(); ?>" + "index.php/homecontroller/buy/" + id,
    data: 
      'id': id
    ,
    success: function(data) 
      $('#resultdiv').html(data);
    
  );
);
<form action="" method="post" id="change">
  <input type="hidden" value="<?php echo $product->id; ?>" id="prod">
  <input type="submit" value="switch">
</form>
<div class="resultdiv">
  <?php echo $data; ?>
</div>

但它没有添加到购物车,它只是重新加载页面。谁能告诉我这里出了什么问题?

【问题讨论】:

【参考方案1】:

因为表单还在提交,所以可以使用preventDefault();

$("#change").submit(function(e) 
  e.preventDefault();
  alert("Change");
  var id = $('#prod').val();
  $.ajax(
    type: 'POST',
    url: "<?php echo base_url(); ?>" + "index.php/homecontroller/buy/" + id,
    data: 
      'id': id
    ,
    success: function(data) 
      $('#resultdiv').html(data);
    
  );
);

【讨论】:

但仍未添加到购物车 您需要查明问题; 1)检查代码是否适用于没有 ajax 的常规表单,如果它工作则 2)检查控制台是否有其他 js/ajax 相关问题

以上是关于使用ajax在codeigniter控制器中调用函数不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 codeigniter 中使用 AJAX 从视图调用控制器函数并从 db 检索行

在 ajax 调用后加载视图,CodeIgniter

使用 ajax 调用 CodeIgniter 模型

jquery Ajax 调用 Codeigniter 控制器

使用 ajax 调用加载视图 codeigniter

调用 CodeIgniter 控制器方法返回 404