我有一个锚标记,希望将其data-id
发送到控制器中的某个函数,该控制器随后将通过模型从数据库中检索数据。
但是,数据没有通过控制器。 Ajax响应显示数据已发送,但控制器显示否则。
这是我的Ajax代码:
$(document).on("click",".learn-more",function(){
var sub_item_id = $(this).data("id");
$.ajax({
url:"<?php echo base_url();?>Designs/business_cards",
type:"POST",
data:{sub_item_id:sub_item_id},
success:function(data){
console.log(data);
},
error: function(error){
throw new Error('Did not work');
}
})
});
我已经设置了数据类型:“ json”,但是没有发送数据,所以我删除了数据类型并且它起作用了,即ajax部分。或者至少响应显示数据已发送。 我的控制器代码是:
function business_cards(){
$id = $this->input->post('sub_item_id');
$data['quantity'] = $this->subproduct_model->get_quantities($id);
$this->load->view('category/business-cards',$data);
}
我的模型代码是:
public function get_quantities($sub_item_id){
$this->db->select('quantities');
$this->db->where('id',$sub_item_id);
$query = $this->db->get('sub_products');
return $query->result_array();
}
包含锚标记的HTML代码
<?php foreach ($results as $object):?>
<a href="#" data-toggle="modal" data-id="<?=$object['id'];?>" data-target="#pricelist-modal-2" class="learn-more">View Prices</a>
<?php endforeach?>
data-id
根据迭代显示正确的值。
当我检查模型代码的结果数组时,它是一个空数组,表明未在控制器中传递$sub_item_id
。可能是什么问题?
答案 0 :(得分:0)
我刚刚复制了您的代码,就可以在控制器中获取该值。 在控制器函数中执行var_dump($ id)。然后在开发人员工具(F12)中检查控制台。由于您具有console.log(data),因此var_dump应该在控制台中。它不会显示在屏幕上。
要检查的其他事项:
您的数据库是否具有该ID的记录? db结果数组可以为空,因为它实际上应该为空吗?
您确定单击代码时data-id实际上有一个值吗?
答案 1 :(得分:0)
它不会传递给控制器,因为您忘记在控制器的功能内放入参数。
注意:您不能使用 输入帖子 ,因为您没有使用表单。
function business_cards($id){ //put a parameter here, serve as container of your passed variable from **ajax**
//$id = $this->input->post('sub_item_id');
$data['quantity'] = $this->subproduct_model->get_quantities($id); //pass the id to your model
$this->load->view('category/business-cards',$data);
}
将您的ajax代码更改为此。
$(document).on("click",".learn-more",function(){
var sub_item_id = $(this).data("id");
$.ajax({
url:"<?php echo base_url('Designs/business_cards/"+sub_item_id+"');?>", //pass the id here
type:"POST",
success:function(data){
console.log(data);
},
error: function(error){
throw new Error('Did not work');
}
})
});