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

calling function in codeigniter controller using ajax not working

我有一个 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>

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

因为表单还在提交,可以使用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);
    }
  });
});