我想单击复选框以显示数据我想要通过ajax调用获取,但它显示数据库所有数据自动显示问题,请找出并帮助我(只是我想要ajax调用)
控制器
//This is my controller
public function laptops()
{
$this->load->model('feature_model');
$filter = array(
'price' => $this->input->get('price'),
'name' =>$this->input->get('name')
);
$data['laptop'] = $this->feature_model->laptops_m($filter);
//echo json_encode($this->feature_model->laptops_m($filter));
$this->load->view('feature/checkbox',$data);
}
//This is my model
function laptops_m($filter = null){
$this->db->select('*')
->from('mobile_phones');
// $query = $this->db->get('laptop_notebook')->result();
// return $query;
if($filter['name']){
$this->db->where('name', $filter['name']);
}
if($filter['price']){
$this->db->where('price', $filter['price']);
}
$query = $this->db->get()->result();
return $query;
}
//This is my view
<input type="checkbox" name="name" value="acer">
<input type="checkbox" name="name" value="lenovo">
<input type="checkbox" name="price" value="1000">
<table>
<tbody>
<?php foreach ($laptop as $laptops_all) { ?>
<tr>
<td><p>Laptop <?php echo $laptops_all->name ?> </p>
</td>
</tr>
<?php } ?>
</tbody>
</table>
Ajax脚本:
// This is the ajax script function
<script>
$("input[checkbox]").change(function(){
$.ajax({
url: localhost/ci35/feature/laptops,
dataType: 'json',
success: function(data){
$.each(data, function(index, element) {
$("tbody").empty();
$("tbody").append("<tr><td>"+
"Laptop "+element.brand+""+
"</td></tr>");
});
}
});
答案 0 :(得分:0)
您尝试从GET
数组中显示数据:
$filter = array(
'price' => $this->input->get('price'),
'name' =>$this->input->get('name')
);
但是您的GET
数组为空,因为您没有使用json
请求发送任何数据。来自jQuery文档:
数据
键入:PlainObject或String或Array
要发送给的数据 服务器。如果不是字符串,它将转换为查询字符串。 它附加到GET请求的URL。请参阅processData选项 防止这种自动处理。对象必须是键/值对。如果 value是一个数组,jQuery使用相同的键序列化多个值 基于传统设置的价值(如下所述)。
因此,您应该遍历已检查checkboxes
并将其值添加到数组中。然后通过data
请求的ajax
属性发送此数组。
答案 1 :(得分:0)
试试这个..添加类=&#34; searchType&#34;到html复选框元素,然后在jquery
2110
当您通过成功ajax调用打印数据时,无需再次使用foreach查看。
同样在您的控制器中,您必须打印json数据。
$('.searchType').click(function() {
alert($(this).attr('id')); //-->this will alert id of checked checkbox.
if(this.checked){
$.ajax({
url: localhost/ci35/feature/laptops,
dataType: 'json',
success: function(data){
$.each(data, function(index, element) {
$("tbody").empty();
$("tbody").append("<tr><td>"+
"Laptop "+element.brand+""+
"</td></tr>");
});
}
});
}
});