我对dataTables和php有点困难。我用以下格式回复了json:
{“iTotalRecords”:10,“iTotalDisplayRecords”:10,“aaData”:[[“1”,“15”,“1”,“长描述长描述长描述长描述”,“2012-02- 25 00:00:00“],[”1“,”15“,”1“,”长描述长描述长描述“,”2012-02-25 00:18:59“] ...] }
哪个inst使用我的dataTable,但是在jsonlint.com/中验证了上述内容之后,我得到了以下格式良好的版本:
{
"iTotalRecords": 10,
"iTotalDisplayRecords": 10,
"aaData": [
[
"1",
"15",
"1",
"long description long description long description long description",
"2012-02-25 00:18:59"
],
...
]
}
当我把它放在一个txt文件中时,它加载得很好。我还注意到在“长描述”部分中添加换行符,即使使用上面的那个也不行。我的猜测是换行符是json格式的混乱,但是我怎么能在我的PHP脚本中避免这种情况,因为所有内容都是自动换行的?我在我的echo代码中尝试了\ n但它似乎没有创建换行符。
答案 0 :(得分:1)
DataTables不接受开括号和大括号{
和}
。我的猜测是,它被认为是一个对象而不是一个数组。试试这个:
使用以下php函数创建JSON数组:
$this->arrayJSON = $this->arrayPHPToJS($myArray);
public function arrayPHPToJS($phpArray) {
if (is_null($phpArray)) return 'null';
if (is_string($phpArray)) return "'" . $phpArray . "'";
if (self::is_assoc($phpArray)) {
$a=array();
foreach ($phpArray as $key => $val )
$a[]=self::arrayPHPtoJS($val);
return "[" . implode ( ', ', $a ) . "]";
}
if (is_array($phpArray)) {
$a=array();
foreach ($phpArray as $val )
$a[]=self::arrayPHPtoJS($val);
return "[" . implode ( ', ', $a ) . "]";
}
return json_encode($phpArray);
}
在视图中的JS脚本中使用此数组(确保没有html转义):
<script type="text/javascript">
var jsArray = <?php echo $arrayJSON; ?>;
$(function(){
var oTable = $('#mytable').dataTable( {
"aaData": jsArray,
....
});
});
</script>
答案 1 :(得分:0)
听起来更像是表/数据表中设置的列数与json数组中的项数不匹配
答案 2 :(得分:0)
我的某个数据库值似乎存在问题,它是从新行开始的,这会导致json的格式不正确。