2017-10-21 3 views
0

이전에 JSON 객체를 사용했지만 완벽하게 작동하지만 이전에 만든 JSON 객체는 가져온 MySQL 항목의 결과였습니다. 자, PHP에서 배열을 통해 내 JSON 객체를 만들려고하는데 데이터베이스에 올바르게 표시되지만 이전과 같은 값에 액세스 할 수 없습니다.JSON, PHP, AS3으로 손실 : 올바른 값을 추적 할 수 없습니다.

$chatArray = array(
array(
    'chatusername' => 'Troy', 
    'chatuserid' => '123', 
    'chatmessage' => 'Hello World' 
), 

array(
    'chatusername' => 'Nick', 
    'chatuserid' => '124', 
    'chatmessage' => 'Testing' 
)); 

$ inputArray = json_encode ($ chatArray);

내가 데이터베이스에 입력 한 내용이고 제대로 작동한다고합니다. 그럼 난 별도의 .PHP에 요구하고 그것은 내가 왜 확실하지 오전 내 데이터베이스의 열 이름입니다 "채팅"정면을 던져이

{"chat":"[{\"chatuserid\": \"123\", \"chatmessage\": \"Hello World\", \"chatusername\": \"Troy\"}, {\"chatuserid\": \"124\", \"chatmessage\": \"Testing\", \"chatusername\": \"Nick\"}]"} 

를 얻을. 나는 그것을 추적 할 때

난 단지

var messageArray:Object = JSON.parse(event.target.data); 
trace(messageArray.chat); 

에 의해 나는 그것이 오류를 반환 messageArray.chat.chatusername 말을 참조하려고 할 때마다 그것을 추적 보일 수있다.

죄송합니다. 아마 간단한 해결책 일 수 있지만 지금은 몇 시간 동안 검색하고 작업하고 있습니다.

도움을 주시면 감사하겠습니다. 고맙습니다!

+0

나는 생각한다. * 첫 번째 메시지에는'messageArray.chat [0] .chatusername', 두 번째 메시지에는'messageArray.chat [1] .chatusername'이 필요합니다. 또는 나는 무엇인가 놓치고 있냐? – rickdenhaan

+0

그게 내가 생각한 다음 오류가 반환됩니다 ReferenceError : 오류 # 1069 : 문자열에 0 속성이없고 기본값이 없습니다. –

+0

아, 알겠습니다. JSON 출력이 올바르지 않습니다. 'messageArray.chat'의 내용은 실제로 JSON으로 인코딩 된 문자열 자체입니다. 별도로'JSON.parse'하거나 출력을 생성하는 PHP 파일을 수정해야합니다. – rickdenhaan

답변

0

the PHP code that generates your JSON output에서 :

$stmt = $conn->prepare("SELECT chat FROM markerinfo WHERE markerid='$chatid'"); 
$stmt->execute(); 
$result = $stmt->fetch(PDO::FETCH_ASSOC); 
echo json_encode($result); 

있다는 사실을 숙지 chat 데이터베이스의 열에 JSON 문자열이 포함되어 있습니다.

이 코드는 데이터베이스에서 JSON 문자열을 디코딩되지 않은, 그래서 $result뿐만 아니라 JSON 문자열을 포함하는 배열 될 것이다 :

$result = [ 
    'chat' => '[{"chatusername":"Troy","chatuserid":"123","chatmessage":"Hello World"},{"chatusername":"Nick","chatuserid":"124","chatmessage":"Testing"}]' 
]; 

json_encode()을 통해 그 배열을 전달함으로써, 당신은 이중 있어 -encoding JSON 문자열. 당신의 목적을 위해

, 당신은 아마 멀리로 얻을 수 있습니다 : 당신이 당신의 출력에 포함 할 chat 열 이름을 원하는 경우,

echo $result['chat']; 

하지만, 먼저 저장된 JSON을 디코딩 할 것이다 :

$result['chat'] = json_decode($result['chat']); 
echo json_encode($result); 
+0

Ahhh brilliant'echo $ result [ 'chat'];'트릭을했습니다. 정말 고맙습니다! –

0

아마 이것은 PHP 측에서 배열을 인코딩 할 때 슬래시로 이스케이프 처리되기 때문에 JS 측에서 JSON 구문 분석이 혼란 스럽습니다. 이처럼 json_encode 함수에 JSON_UNESCAPED_SLASHES 옵션을 추가하십시오 :

$inputArray = json_encode($chatArray, JSON_UNESCAPED_SLASHES); 

확인 json_encode 기능 자세한 내용은 문서 : http://php.net/manual/en/function.json-encode.php

+0

나는 그걸 시험해 보았습니다. –

+0

@TroyMyers는'$ inputArray'의 결과를 인쇄 해 보았습니까? 이스케이프가 오는 백 슬래시가 어디에서 왔는지 확인해야합니다. 'json_encode'가 아니라면, mysql 쿼리가 컨텐트 자체를 이스케이프 처리 할 수 ​​있습니다. 삽입 코드를 우리와 공유해 주시겠습니까? –

+0

도움을 주셔서 감사합니다! rickdenhaan가 해결했습니다. –

관련 문제