当我试图从数据库中检索数据到表时,我会得到以下错误:
DataTables warning (table id = 'student_table'): Requested unknown
parameter '1' from the data source for row 0
下面是我使用的javascript
<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>
检索到的JSON数据:
{"sEcho":0,"iTotalRecords":3,
"iTotalDisplayRecords":3,
"aaData":[["85","t1","1D"],["74","test475","4A"],
["777","maiz","5"]],"sColumns":"id,name,class"}
下面是我的表格:
<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>
PHP代码(点燃的数据表)
$this->load->library('datatables');
$this->datatables->select('admission,name,class');
$this->datatables->from('students');
echo $this->datatables->generate();
我正在使用codeigniter和DataTables。
为什么我会出现这个错误,以及如何将数据检索到表中?
我也遇到了同样的问题。问题就在这里:
<tr>
<td class="dataTables_empty">Loading data from server</td>
</tr>
您有三个<TH>
,但只有一个<td>
。再添加两个<td>
将修复您的错误。还有一件事,如果没有可用的数据,它会自动显示消息,你不需要显示消息。在这种情况下,你可以删除它,因为它将自动完成:
<tr>
<td class="dataTables_empty">Loading data from server</td>
</tr>
为了自定义消息,将其作为选项"sEmptyTable": "Loading data from server"
传递
$('.datatable ).dataTable({
"bFilter": false,
"bPaginate": false,
"bLengthChange": false,
"bInfo": false,
"oLanguage": {
"sEmptyTable": '',
"sInfoEmpty": ''
},
"sEmptyTable": "Loading data from server"
});
您正在使用POST方法来获取数据。如果您使用php(数据表提供的示例),则会使用GET方法。我假设当您使用排序或搜索时,所有请求都是GET。
几个可能有帮助的想法。。。
-
确保来自服务器的响应是正确格式化的JSON,具有正确的头。例如。https://stackoverflow.com/a/4064468/661584我自己不确定点火器/php,但可能是个问题。
-
不确定sColumns参数本身是否正确,认为这是为了重新排序客户端上的列。。。并且仅与sName一起使用请参见http://datatables.net/usage/columns#sName和http://datatables.net/usage/server-side
所以这可能会把事情搞砸。
- 若是别的原因,也许看看这里的答案。。。可能会有所帮助
祝好运
我们遇到了类似的问题。。。
但是,在你发疯之前,先检查一下表中的数据。在我们的案例中,我们的数据在填充表格的数据中使用了超链接和花引号——当数据从CSV文件上传时,这些引号和花引号被删除了。简而言之,IE无法处理它,但Chrome和Firefox忽略了它。