2015-04-27 19 views
23

tôi cố gắng sử dụng DataTables jQuery nhưng tôi nhận được lỗiDatatables Lỗi Loại: c là undefined

TypeError: c is undefined

Tôi không biết những gì là sai với mã của tôi như tôi có thể nhìn thấy các JSON lấy một cách chính xác và đang trong chính xác định dạng quá nhưng tôi không biết những gì là sai với nó mà tôi nhận được lỗi ở trên.

JSON của tôi:

{"Data":[{"LOGIN":10184},{"LOGIN":10214},{"LOGIN":10180},{"LOGIN":10187},{"LOGIN":10179},{"LOGIN":10280},{"LOGIN":201},{"LOGIN":10238},{"LOGIN":10296},{"LOGIN":10312}]} 

và mã DataTables của tôi:

$(document).ready(function() { 
    $('#tablename').dataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": { 
      "type": "POST", 
     "url": "https://test.com/api/db/select", 
     "data": function (json) { return JSON.stringify({ "Sql": 12 });}, 
     "contentType": "application/json; charset=utf-8", 
     "dataType": "json", 
     "processData": true, 
      beforeSend : function(xhr){ 
         var access_token = sessionStorage.getItem('access_token'); 
         xhr.setRequestHeader('Authorization', 'Bearer ' + access_token); 
      } 
     }, 
     "dataSrc": "Data", 
     "columns": [ 
      { "data": "LOGIN" } 
     ] 
    }); 
}); 
+1

Tôi Giả sử bạn đang sử dụng js rút gọn của các plugin, nếu bạn sử dụng không -minified one, bạn sẽ nhận được thông tin hữu ích hơn ... không có biến "c" trong mã của bạn ... – n00dl3

Trả lời

3

dataSrc là một DataTables đặc biệt lựa chọn ajax, mà nên được bao gồm bên trong đối tượng ajax:

"ajax": { 
    "dataSrc": "Data", //<--- place dataSrc here instead 
    "type": "POST", 
    ... 
} 

Bạn đã đặt nó bên ngoài ajax, và bởi dataTables đó không có ý tưởng những gì nguồn để sử dụng (bên cạnh đó một cách mù quáng thử phản ứng ajax) hoặc ở đâu LOGIN thuộc về.

56

Kiểm tra xem bạn đã thêm

<thead></thead> 

<tbody></tbody> 

Tôi đã giải quyết vấn đề này bằng cách thêm những.

Vì vậy, về cơ bản cấu trúc phải như:

<table> 
<thead> 
    <tr> 
    <th></th> 
    <th></th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
    <td></td> 
    <td></td> 
    </tr> 
</tbody> 
</table> 
+4

Cảm ơn bạn, thông báo lỗi này rất gây hiểu lầm ... – PbxMan

+1

Chào mừng bạn đời. một khi tôi nhận được lỗi đó. –

+1

Ngay trên myan, ngay trên !! Cảm ơn – Dan

1

Trong trường hợp của tôi, tôi đã cùng một lỗi vì tôi đã sử dụng ajax.dataSrc (dữ liệu) chức năng để thao tác dữ liệu. Nhưng sau đó tôi quên trả lại dữ liệu.

"dataSrc": function (json) { 
    for (var i=0, ien=json.data.length ; i<ien ; i++) { 
     //somethings... 
    } 
    return json.data;// I forgot this line, then i got the error "TypeError: c is undefined" 
} 

Sau một vài phút, tôi đã kiểm tra các tài liệu của hàm ajax.dataSrc và tôi nhận thấy rằng tôi không có sự trở lại:

Returns: mảng. Mảng dữ liệu mà DataTables là sử dụng để vẽ bảng

Tôi hy vọng bạn không có sự phân tâm cùng ...

1

Đôi khi, vấn đề kiểu này đến bằng cách sửa chữa không phù hợp/cột bất bình đẳng với các cột HTML và datatables .

"columns": [ 
     null, 
     null, 
     null, 
     {"orderable": false, "width":"2%"}, 
    ], 

Trên javascript định nghĩa 4 cột và HTML có 5 cột

<tr> 
    <td>A</td> 
    <td>B</td> 
    <td>C</td> 
    <td>D</td> 
    <td>E</td> 
</tr> 

Do đó bạn sẽ phải sửa chữa/bằng cả HTML bên và cấu hình DataTable.

"columns": [ 
     null, 
     null, 
     null, 
     null, //Added New 
     {"orderable": false, "width":"2%"}, 
    ], 
0

trong trường hợp của tôi, tôi đã phải gỡ bỏ thuộc tính colspan từ một thứ bên trong thead và thoát khỏi các lỗi; (

Các vấn đề liên quan