我想单击复选框以在codeigniter中显示数据库字段值

时间:2016-05-02 12:17:05

标签: php codeigniter mysqli

我想单击复选框以显示数据我想要通过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>");
                });
            }
        }); 

2 个答案:

答案 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>");
                });
            }
        }); 
     }
   });