2012-07-20 5 views
0

DataTables라는 jquery 플러그인을 사용하고 있는데 테이블을 렌더링하기 위해 json 문자열을 반환해야합니다.PHP + json encode + Datatables

현재 출력 된 JSON합니다 (aaData 배열을 참조)과 같습니다은 {} 중괄호 실제로 aaData 배열해야하는지 궁금 해요

{"sEcho":0,"aaData":[[{"ID":"1","idPatient":"122342","idFacility":"3","idTreatment":"3"}]]} 

. 실제로, 나는 중괄호가 실제로 JSON 구문 분석 오류의 원인이라고 생각합니다.

이 코드를 생성하는 실제 코드는 다음과 같습니다. (core->dbh는 PDO 핸들입니다)

<?php 

require_once('core/Core.php'); 
$core = Core::get_instance(); 

     $sql = 'SELECT ID, idPatient, idFacility, idTreatment 
       FROM Pathology WHERE idPatient = 122342'; 

     $stmt = $core->dbh->prepare($sql); 

     $stmt->setFetchMode(PDO::FETCH_ASSOC); 

     // bind parameters 
     $stmt->execute(); 

     // prepare output for DataTables 

     $data = array("sEcho" =>intval($_GET['sEcho']), 
         "aaData" =>array() 
     ); 

     while($result = $stmt->fetchAll()) { 

       $data['aaData'][] = $result; 

     } 

      echo json_encode($data); 


?> 

사람이 JSON이 부적절하게 구문 분석 오류의 원인이 될 수있는 또 다른 방법으로 포맷 된 경우 나 중괄호를 제거하거나 수있는 방법을 말해 주시겠습니까?

감사합니다.

답변

4

JSON은 정상입니다. json_encode를 통해 PHP로 인코딩하고 있습니다. 문제는되지 않습니다. 내 생각 엔이 일을함으로써 $data['aaData'][] = $result; 당신은 결과를 두 번 중첩 (이중 괄호를 참조)하고 플러그인이 실패합니다. 이것을 시도하십시오 : $data['aaData'] = $result;

+0

예, 그렇게 생각합니다. Result는 행의 배열입니다. –