我正在使用codeigniter开发购物车。当我通过ajax将数据发送到控制器时,它不起作用。这是我正在使用的ajax代码 您可以在以下链接中查看我的演示ebsite
$(".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;
当我发出警报(数量)和警报(身份证)时,我得到了结果。 但我没有在我的ajax_controller中获取值。
这是我的控制器
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;
答案 0 :(得分:3)
更改ajax网址 您正在使用php标记内的java脚本变量。
$(".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;
答案 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