DataTables和php json_encode

时间:2014-03-21 08:29:50

标签: json jquery-datatables

我想在PHP / json_encode中使用jQuery(1.10.2)/ DataTables(1.9.4)。

代码:

#First test.
$response=array();
foreach(array_slice($personList,0,10) as $person){
 $response[]=array($person["firstname"],$person["surename"]);
}
$data=array(
 "sEcho"=> 1,
 "iTotalRecords"=> "10",
 "iTotalDisplayRecords"=> "10",
 "aaData"=> $response);

 echo json_encode($data);
 return;

//Second test.
echo '{"sEcho":1,"iTotalRecords":"10","iTotalDisplayRecords":"10","aaData":[["John","Roland"],["Ian","McDonald"],["Henry","Anderson"]]}';
return;

第一个测试不起作用,当在注释中设置并运行第二个测试时,它可以工作。第二个数据是从Firefox第一个输出中复制的。我在DataTables中找到第一个“找不到匹配的记录”。

JS代码:

$('#personsTable').dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "http://server/app/index.php/json/personAll"
});

在“echo”之前与以下内容没有区别:

header('Content-type: application/json');

我做错了什么?

谢谢,

更新:当使用模型(DAO)中的数组代码时,它不起作用:

$this->db->order_by("firstname, surename");
$query = $this->db->get('person');
return $query->result_array();

常规字符串有效。 strval没有什么区别,奇怪的是strval(intval())也不是......

该表最初是latin1,使用phpmyadmin转换为“utf8_general_ci”。我已将所有表导出到SQL,在文本编辑器中将其从latin1更改为utf8,删除了表并重新导入它们,但没有区别。

1 个答案:

答案 0 :(得分:0)

数据库在latin1中,在迁移到utf8_general_ci之后,它工作正常(纠正了一些其他编程错误)。