使用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 检索行