2017-10-04 7 views
2

Angularjs와 SlimPHP를 처음 사용하고 json에게 내 데이터를 구문 분석하는 데 문제가 있습니다. 방금 새 응용 프로그램을 시작한 이유와 이것이 작동하지 않는 이유를 알 수 없습니다.JSON.parse : 예기치 않은 데이터 끝

작동하는 것처럼 보이는 컨트롤러의 기능은 다음과 같습니다. print_r을 사용하여 $ pole을 표시 할 수 있지만 Json을 반환 할 수 없습니다. 파이어 폭스의 네트워크에서 나는 "SyntaxError : JSON.parse : JSON 데이터의 1 행 1 열의 데이터가 예기치 않게 끝난다"라는 실수를했다.

public function getPoles($request, $response) { 

    $poles = $this->container['form.dao']->getPoles(); 
    if ($poles == null) { 
     return json_encode(["error" => "no data found"]); 
    } 

    return $response->withJson($poles, 200); 
} 

getPoles formDAO.php() 함수 :

public function getPoles() { 
    $request = "SELECT * FROM menu_pole ORDER BY id"; 
    try { 
     $stmt = $this->db->query($request); 
     $poles = $stmt->fetchAll(\PDO::FETCH_OBJ); 
     return $poles; 
    } catch(\PDOException $e) { 
     return '{"error":{"text":'. $e->getMessage() .'}}'; 
    } 
} 

는 내가 분명 뭔가가있을 수 있습니다 같아요.

편집 : 인 print_r와

,이 얻을 :

Array(
[0] => stdClass Object 
    (
     [id] => 1 
     [libelle] => GE 
    ) 

[1] => stdClass Object 
    (
     [id] => 2 
     [libelle] => GP 
    ) 

[2] => stdClass Object 
    (
     [id] => 3 
     [libelle] => GS 
    ) 

[3] => stdClass Object 
    (
     [id] => 4 
     [libelle] => NO 
    ) 

[4] => stdClass Object 
    (
     [id] => 5 
     [libelle] => DH 
    ) 

[5] => stdClass Object 
    (
     [id] => 6 
     [libelle] => CRC 
    ) 

[6] => stdClass Object 
    (
     [id] => 7 
     [libelle] => SG 
    )) 

답변

0

반환 JSON과 같은 :

public function getPoles($request, $response) { 

    $poles = $this->container['form.dao']->getPoles(); 
    if ($poles == null) { 
     $data['error'] = 'no data found'; 
     return json_encode($data); 
    } 

    return $response->withJson($poles, 200); 
} 
+0

감사하지만 불행히도이 문제가 해결되지 않습니다. 나는 여전히 같은 오류가있다 – Nagah

+1

'$ poles'에서 Poles의 결과를 얻고 있습니까? 게시 할 수 있습니까? –

0

가 나는 문제의 근원을 발견 생각합니다. 배열에서, 나는 꽤 길기 때문에 전체 "libelle"필드를 복사하지 않았다. 데이터가 프랑스어로되어 있기 때문에 지원되지 않는 많은 악센트가 있기 때문에 이것이 문제라는 것을 알았습니다.

난 그냥 내 DB 연결이 줄을 업데이트해야 :

$db = new PDO("mysql:host=$host;dbname=$db_name", $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); 
관련 문제