Datatables服务器端自动行ID
我想呈现一个DataTable,它会自动插入和ID到每一行。Datatables服务器端自动行ID
根据http://datatables.net/release-datatables/examples/server_side/ids.html和我理解好,如果我传递一个DT_RowId“列”与每一行,它应该自动执行。
我使用的样本PHP他们在这里提供:http://datatables.net/release-datatables/examples/data_sources/server_side.html
我做了一个MySQL视图有一个动态表,打开表索引到一个名为DT_RowId列,并添加到$ aColumns变量,因此它输出在JSON中。
该值在JSON中打印,但没有任何反应。我99%肯定它是因为它们提供的PHP代码不会回显柱
在本例中的名称JSON应该是:
"aaData": [
{
"0": "Gecko",
"1": "Firefox 1.0",
"2": "Win 98+/OSX.2+",
"3": "1.7",
"4": "A",
"DT_RowId": "row_7",
"DT_RowClass": "gradeA"
}, { ... }
但PHP输出无钥匙
"aaData": [
{
"Gecko",
"Firefox 1.0",
"Win 98+/OSX.2+",
"1.7",
"A",
"row_7",
"gradeA"
}, {...}
看到我认为“客户端JavaScript应该如何知道行中的最后一列是DT_RowId?”。所以我编辑了PHP输出JSON与关键数据作为自己的榜样,我得到:
{
"sEcho": 1,
"iTotalRecords": "4",
"iTotalDisplayRecords": "4",
"aaData": [
{
"Nombre": "Some Name",
"username": "some username",
"Email": "some email",
"lastModified": "0000-00-00 00:00:00",
"lastLogin": "2012-02-23 12:04:55",
"rolname": "Some string",
"DT_RowId": "2"
}, {...},{...},{...} ] }
,但我得到一个警告说“数据表警告:请求的未知参数‘0’构成的数据源行0“
我的JSON格式是像他们那样,我使用
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "scripts/id.php"
,所以我不知道为什么它不是一个有效的JSON的数据表来呈现。我可能会错过一些愚蠢的东西,但我被困在这里。
感谢所有帮助
我得到了相同的错误愚蠢地分配一个空值。这是我的错误响应:
{"aaData": [
null,
{
"0": "Gecko",
"1": "Firefox 1.0",
"DT_RowId": "row_7",
"DT_RowClass": "gradeA"
}, { ..row2.. }
]}
通过印刷:
echo json_encode($out);
我这是怎么custruct响应:
function dittaInfoTable($db, $id) {
$ret['aaData'][]=null; <-- wrong line to correct in $ret['aaData']=null;
$res=$db->getA($id,$db->getTabDoc(),'id_ditta');
$line=count($res);
for($i=0;$i<$line;$i++){
$row=array();
$col=count($res[$i]);
for ($j=0 ; $j<$col ; $j++){
if($j == $col - 1)
$row['DT_RowId']= 'row_'.$res[$i][$j];
else
$row[] = $res[$i][$j];
}
$ret['aaData'][]=$row;
}
return $ret;
}
在这里我如何从DB数据:
private function queryNotAss($sql){
$this->last_sql=$sql;
$arr=array();
$r = mysqli_query($this->link,$sql);
for ($i=0; $i<mysqli_num_rows($r);$i++)
$arr[$i]=mysqli_fetch_row($r);
return $arr;
}
所以是的,你有一个不好的json行您的json响应中的元素。
的aaData你提到的“钥匙”是无效的JSON。 {}
应该是数组括号[]
。我收回了我的意见,数据格式正确,除了括号问题
我知道这是旧的,但我已经破解了这个螺母,没有任何疯狂的jS代码或服务器端脚本的东西。与 “列” 功能键控这样后您必须命名的列:
var meowTable = $('#meow').dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "get_meow_table.php",
"columns": [ //needed for when you have keys with JSON
{ "data": "meow" },
{ "data": "woof" },
{ "data": "moo" },
{ "data": "cluck" }
]
});
快乐datatable'ing ...
这里是我的方式:
/**
* Output
*/
$output = array(
"sEcho" => intval($input['sEcho']),
"iTotalRecords" => $iTotal,
"iTotalDisplayRecords" => $iFilteredTotal,
"aaData" => array(),
);
while ($aRow = $rResult->fetch_assoc()) {
$row = array();
$row['DT_RowId'] = $aRow['id'];
for ($i=0 ; $i<$iColumnCount ; $i++) {
if ($aColumns[$i] == 'version') {
// Special output formatting for 'version' column
$row[] = ($aRow[ $aColumns[$i] ]=='0') ? '-' : $aRow[ $aColumns[$i] ];
} elseif ($aColumns[$i] != ' ') {
// General output
$row[] = $aRow[ $aColumns[$i] ];
}
}
$output['aaData'][] = $row;
}
echo json_encode($output);
你确定吗?我不是做任何括号或大括号,它是由json_encode(自动完成)和[{} {}]结构它是相同的,因为它们的文档 – Juan 2012-02-29 16:54:53
在{}应该对象符号{“之间提供JSON示例富 “:” 酒吧“}。如果你还没有使用jsonlint.com,它是终极的JSON验证 – charlietfl 2012-02-29 17:00:26
实际PHP输出一行,使用jsonlint.com这里粘贴之前,美化它,如果你的意思是{...}这就是我这验证 – Juan 2012-02-29 17:28:42