2012-09-05 31 views
6

Khi tôi cố gắng để lấy dữ liệu từ cơ sở dữ liệu của tôi để bàn, tôi nhận được lỗi này:yêu cầu tham số chưa biết '1' từ nguồn dữ liệu cho hàng 0 trong DataTables

DataTables warning (table id = 'student_table'): Requested unknown 
parameter '1' from the data source for row 0 

Dưới đây là javascript mà tôi sử dụng

<script type="text/javascript" charset="utf-8"> 
$(document).ready(function() { 
    $('#student_table').dataTable({ 
     "bProcessing": true, 
     "bServerSide": true, 
     "sServerMethod": "POST", 
     "sAjaxSource": "<?php echo base_url()?>index.php/data/all" 
    });    
}); 
</script> 

Các dữ liệu JSON lấy:

{"sEcho":0,"iTotalRecords":3, 
"iTotalDisplayRecords":3, 
"aaData":[["85","t1","1D"],["74","test475","4A"], 
["777","maiz","5"]],"sColumns":"id,name,class"} 

Dưới đây là bảng của tôi:

<table class="datatable tables" id="student_table"> 
    <thead> 
     <tr> 
      <th>ID</th> 
      <th>Name</th> 
      <th>Class</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td class="dataTables_empty">Loading data from server</td> 
     </tr> 
    </tbody> 
</table> 

mã PHP (datatables đốt cháy)

$this->load->library('datatables'); 

$this->datatables->select('admission,name,class'); 
$this->datatables->from('students'); 
echo $this->datatables->generate(); 

Tôi đang sử dụng CodeIgniter và DataTables.

Tại sao tôi nhận được lỗi đó và cách truy xuất dữ liệu vào bảng?

Trả lời

1

Bạn đang sử dụng phương thức POST để nhận dữ liệu. Nếu bạn làm theo php ví dụ được cung cấp với datatables, phương thức GET được sử dụng. Tôi giả sử rằng khi bạn sử dụng phân loại hoặc tìm kiếm tất cả các yêu cầu là GET.

+0

tôi đã thử cả GET và POST nhưng tôi gặp lỗi tương tự. – LiveEn

+0

Lỗi phải nằm trong phần php, bạn có thể chỉ ra điều đó không? – JvdBerg

+0

tôi đã thêm mã php (dữ liệu được kích hoạt) vào bài đăng chính. – LiveEn

0

Couple ý tưởng mà có thể giúp ...

  1. Hãy chắc chắn rằng phản ứng của bạn từ máy chủ được định dạng đúng JSON, với đúng tiêu đề. ví dụ. https://stackoverflow.com/a/4064468/661584 không chắc chắn về chính igniter/php nhưng có thể là một vấn đề.

  2. Không chắc các param sColumns là đúng có ngày của riêng mình, nghĩ rằng đó là cho sắp xếp lại của cols trên client ... và chỉ được sử dụng với sName thấy http://datatables.net/usage/columns#sNamehttp://datatables.net/usage/server-side

Vì vậy, sức mạnh đó làm rối tung nó lên.

  1. Nếu cái gì khác của nó, có thể nhìn vào câu trả lời here ... có thể là một số trợ giúp.

Chúc may mắn

14

Tôi cũng có cùng một vấn đề. Vấn đề là ở đây:

<tr> 
      <td class="dataTables_empty">Loading data from server</td> 
</tr> 

Bạn có ba <TH> nhưng chỉ có một <td> Thêm hai hơn <td> sẽ sửa chữa lỗi lầm của mình. Một điều nữa, nếu không có dữ liệu có sẵn Nó sẽ hiển thị thông điệp tự động bạn không cần phải hiển thị message.In trường hợp này bạn có thể loại bỏ điều này vì nó sẽ được thực hiện tự động:

<tr> 
      <td class="dataTables_empty">Loading data from server</td> 
</tr> 

Để tùy chỉnh thông điệp chuyển tùy chọn này dưới dạng tùy chọn "sEmptyTable": "Loading data from server"

$('.datatable).dataTable({ 
    "bFilter": false, 
    "bPaginate": false, 
    "bLengthChange": false, 
    "bInfo": false, 
    "oLanguage": { 
    "sEmptyTable": '', 
    "sInfoEmpty": '' 
    }, 
    "sEmptyTable": "Loading data from server" 
}); 
+0

Tôi yêu bạn. Chỉ cần dành mãi mãi để tìm ra điều này. – Chris

+0

Mã của tôi sử dụng colspans, hi vọng rằng những chiếc colspans không gây ra điều này ngay cả khi chúng đúng! – Andy

0

Chúng tôi đang gặp sự cố tương tự ...

Nhưng, trước khi bạn đi hạt - hãy kiểm tra dữ liệu trong bảng. Trong trường hợp của chúng tôi, dữ liệu của chúng tôi có siêu liên kết và dấu ngoặc kép được sử dụng trong dữ liệu đã điền bảng - những dấu ngoặc kép báo giá bị xóa khi dữ liệu được tải lên từ tệp CSV. Câu chuyện ngắn gọn là IE không thể xử lý nó, nhưng Chrome và Firefox đã bỏ qua nó.

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