【发布时间】:2015-08-08 15:58:45
【问题描述】:
我一直在尝试找出让 DataTables'child rows, 处理我的数据的最佳方法。这里有几篇文章,但没有一篇专门提到我的问题。
我的情况:
在想要添加可扩展行之前,我的所有数据都通过 PHP 导入到页面中,直接连接到我的 MySQL 数据库并填充包含在 DataTables $(document).ready 函数中的表。加载 DataTables 很简单,而且效果很好。 但是,我看不到任何方法,使用 PHP 数据添加可扩展的子行,因为数据必须(据我所知)在初始生成之后添加表,如下所示在他们的演示文件中:
$('#example tbody').on('click', 'td.details-control', function () {
var tr = $(this).closest('tr');
var row = table.row( tr );
console.log(row);
if ( row.child.isShown() ) {
// This row is already open - close it
row.child.hide();
tr.removeClass('shown');
}
else {
// Open this row
row.child( format(row.data()) ).show();
tr.addClass('shown');
}
});
function format ( d ) {
// `d` is the original data object for the row
return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
'<tr>'+
'<td>Full name:</td>'+
'<td>hi</td>'+
'</tr>'+
'<tr>'+
'<td>Extension number:</td>'+
'<td>12345</td>'+
'</tr>'+
'<tr>'+
'<td>Extra info:</td>'+
'<td>And any further details here (images etc)...</td>'+
'</tr>'+
'</table>';
}
从技术上讲,即使这段代码也可以工作。当我单击一个单元格时,它会展开,在下面显示这个新创建的表格 - 但我不知道有什么方法可以用我想要的 php 数据填充它,(而不是这里的通用数据......) ,因为 PHP 代码是在 JavaScript 代码运行之前从服务器生成的,等等。
我的尝试:
我阅读了here关于DataTables的服务器端处理,并修改了他们在网站上的脚本,但是当我第一次运行php文件时,我缺少ssp.class.php,所以我下载了最新版本的 DataTables,然后用这个来调用它:
require( '../../plugins/jqueryDataTables/DataTables-1.10.7/examples/server_side/scripts/ssp.class.php' );
但是,现在,我收到了这个错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 57 bytes) in C:\xampp\htdocs\plugins\jqueryDataTables\scripts\ssp.class.php on line 433
第 433 行内容为:return $stmt->fetchAll();
我不知道该做什么,也不知道为什么我不能让脚本正常工作,但是在 DataTables 的网站上数小时后,我感到很沮丧。对我的情况有任何帮助都会很棒,或者如果我一开始就搞错了,那也很高兴!
【问题讨论】:
-
您是否尝试过提高 php.ini 中的内存限制?
-
它设置为 128MB - 绝对超出了我对这个查询的需要。
-
你找到解决办法了吗?
-
我做到了 - 我创建了一个关于我是如何做到的答案。
标签: php jquery datatables