我想在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,删除了表并重新导入它们,但没有区别。
答案 0 :(得分:0)
数据库在latin1中,在迁移到utf8_general_ci之后,它工作正常(纠正了一些其他编程错误)。