【问题标题】:calling function in codeigniter controller using ajax not working使用ajax在codeigniter控制器中调用函数不起作用
【发布时间】: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>

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

【问题讨论】:

    标签: javascript php jquery ajax codeigniter


    【解决方案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 相关问题
    猜你喜欢
    • 2021-02-03
    • 2014-04-05
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    相关资源
    最近更新 更多