我正在使用DataTables,我希望能够通过名称而不是列号来引用我的mData
。
目前我的请求如下:
"aoColumns": [
{ "mData": "0" },
{ "mData": "1" },
{ "mData": "4" },
{ "mData": "12" },
],
我希望能够以这种方式提出要求:
"aoColumns": [
{ "mData": "id" },
{ "mData": "name" },
{ "mData": "Amount" },
{ "mData": "Date" },
],
这是我在PHP代码中的专栏:
$aColumns = array( 'id','name','Amount','Date');
我的JSON
看起来像这样:
[aaData] => Array
(
[0] => Array
(
[0] => 12
[1] => Test Account
[2] => 38
[3] => 03/21/2015 )
谢谢,任何意见都表示赞赏。
答案 0 :(得分:1)
这是你想要实现的目标吗?
"aoColumns": [
<?php foreach($aColumns as $column):?>
{ "mData": "<?php echo $column;?>" },
<?php endforeach;?>
],
答案 1 :(得分:1)
为了能够使用名称而不是数字来引用数据,您应该使用随标准DataTables下载提供的SSP.class.php库(使用当前下载,您可以在examples\server_side\scripts
中看到它。这个库你需要在PHP中有一组关联数组。所以你的PHP代码会改变:
$aColumns = array( 'id','name','Amount','Date');
要:
$columns = array(
array('db' => 'id', 'dt' => 'id'),
array('db' => 'name', 'dt' => 'name'),
array('db' => 'Amount', 'dt' => 'Amount'),
array('db' => 'Date', 'dt' => 'Date')
);
db
是数据库中表的名称,dt
是DataTables中它的相应名称。这是一个映射。
添加您的详细信息和参数,如下所示:
$table = 'your_table_in_database';
$primaryKey = 'id';
$sql_details = array(
'user' => 'your_db_username',
'pass' => 'your_db_password',
'db' => 'name_of_your_db',
'host' => 'localhost_or_your_host'
);
然后JSON使用DataTables提供的SSP类对其进行编码:
require( 'ssp.class.php' );
echo json_encode(SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns));
然后,您将在DataTables初始化中引用这些列,如下所示:
$(document).ready(function() {
$('#example').dataTable( {
"processing": true,
"serverSide": true,
"ajax": "your_directory/your_php_file.php",
"columns": [
{ "data": "id" },
{ "data": "name" },
{ "data": "Amount" },
{ "data": "Date" }
]
} );
} );
如果您不想使用SSP并希望手动处理服务器端并使用JSON对象,那么您需要确保将其他属性作为JSON对象的一部分。
您将需要draw
属性,这是绘图计数器,每次加载页面时都会递增。您还需要recordsTotal
定义哪个是记录总数,最后您将需要recordsFiltered
,这是应用过滤器后的记录数(根据定义,它将等于或小于{{ 1}})。
JSON结构的外观示例(来自DataTables示例):
recordsTotal
使用SSP类作为参考然后重新创建自己的代码(这是不需要的,因为SSP被DataTables自己的服务器端数据处理示例用作标准。正如下面提到的davidkonrad,不要重新发明轮子)。我将在这里提供SSP类作为参考,但您可以在我上面提到的目录中找到它。
ssp.class.php(看一下{
"draw": 16,
"recordsTotal": 57,
"recordsFiltered": 57,
"data": [
...
]
}
方法让自己开始):
simple
此处的文档可能有所帮助:http://datatables.net/manual/server-side
您可以从DataTables网站复制的示例是:http://datatables.net/examples/server_side/object_data.html