在datatables codeigniter中使用json显示数据

时间:2016-05-23 15:24:51

标签: jquery json codeigniter datatables

我想在数据表中使用json数据格式显示我的数据,但我没有在表中获取任何数据。任何人都可以帮我通过JSON在datatable中显示数据吗?

这是我的控制者:

public function data_courses(){
    $result=$this->Users_model->get_active_courses();
    echo json_encode($result);
}
public function courses_list(){
    $this->authentication();
    $this->load->view('courses');
}

这是我的观点:

<table class="table table-striped table-hover table-bordered" id="allcourses">
    <thead>
        <tr role="row">
            <th>
                Course Name
            </th>
            <th>
                Indian Price
            </th>
            <th>
                U S Price
            </th>
            <th>
                Course Duration
            </th>
            <th>
                Discount
            </th>
            <th>
                <center>Pick Course</center>
            </th>
        </tr>
    </thead>
</table>

这是我的剧本:

$(document).ready(function() {
    $('#allcourses').dataTable({
        "aLengthMenu": [
                [5, 15, 20, 100, -1],
                [5, 15, 20, 100, "All"]
            ],
 "ajax": "Student/data_courses",
        "aoColumns": [
            {"data": "course_name"},
            {"data": "price_INR"},
            {"data": "price_USD"},
            {"data": "no_of_hours"},
            {"data": "discount"},
            {"data": "status"},
            { "bSortable": false }
        ]
    });
});

这是我的模特

public function get_active_courses(){
     $this->db->select('*');
    $this->db->from('courses');
    $this->db->where('status',1);
    $query=$this->db->get();
    return $query->result();    
    }

我的JSON数据

{"data":[{"course_id":"1","course_name":" PHP","price_INR":"25,000","price_USD":"750","no_of_hours":"86","date":"2016-05-19 17:58:47","status":"1","discount":"5.89"},{"course_id":"5","course_name":"Java","price_INR":"15,000","price_USD":"650","no_of_hours":"25","date":"2016-05-14 07:59:24","status":"1","discount":"2.50"},{"course_id":"6","course_name":"Dot net","price_INR":"23,000","price_USD":"250","no_of_hours":"36","date":"2016-05-14 12:16:33","status":"1","discount":"5.63"},{"course_id":"7","course_name":"python","price_INR":"15000","price_USD":"650","no_of_hours":"78","date":"2016-05-14 19:25:34","status":"1","discount":"2.50"},{"course_id":"9","course_name":"HTML & CSS","price_INR":"28,000","price_USD":"980","no_of_hours":"78","date":"2016-05-14 19:31:16","status":"1","discount":"2.36"}]}

1 个答案:

答案 0 :(得分:1)

检查你的json返回一个“data”属性,其中表格数据为值,即:

{
    "data" : [
        {...},
        {...}
        ...
    ]
}

为此,只需更改

即可
public function data_courses(){
    $result=$this->Users_model->get_active_courses();
    echo json_encode($result);
}

要:

public function data_courses(){
    $result=$this->Users_model->get_active_courses();
    echo json_encode(array("data" => $result));
}

更多信息Here

更新:您还应该检查html表(th元素)中的标题列数是否与javascript中的列数相同。目前,您在javascript中定义了7列,但在html中定义了6个标题列。尝试删除列定义中的最后一个{ "bSortable": false }