2016-07-19 4 views
0

ajax 호출을 수행 할 때 json_encoded 데이터를 구문 분석 할 때 데이터를 콘솔에 기록 할 때 실제로는 객체 대신 문자열 배열이됩니다. 이것을 보여줍니다.ajax 객체 대신 문자열 배열을 반환하는 JSON 호출

[ 
"{" todoText":"dgdgdfgdfgdf", 
"completed":false, 
"editable":false 
}", 

"{ 
"todoText":"test 2", 
"completed":false, 
"editable":false 
}", 

"{ 
"todoText":"test 3", 
"completed":false, 
"editable":false 
}", 

"{ 
"todoText":"sdfsdf", 
"completed":false, 
"editable":false 
}" 
] 

이것은 데이터 검색을 위해 사용 된 코드입니다.

$(document).ready(function() { 


$.get("php/listtasks.php", function(data){ 

var parsed = JSON.parse(data); 


    $('#directions').html(parsed[0]); 

    console.log(parsed); 
}) 

}); 

이것은 데이터를 인코딩하고 자바 스크립트로 다시 출력하는 데 사용되는 PHP 코드입니다.

$x[$j] = json_decode($row[2]); 

내가이 당신을 도움이되기를 바랍니다 :이처럼 디코딩 할 수 있도록

$query = "SELECT * FROM list"; 
$result = $conn->query($query); 
if (!$result) die ("Database access failed: " . $conn->error); 

$rows = $result->num_rows; 


for ($j = 0 ; $j < $rows ; ++$j) 
{ 
$result->data_seek($j); 
$row = $result->fetch_array(MYSQLI_NUM); 


$x[$j] = $row[2]; 


} 

echo json_encode($x); 
+0

$x[$j] = $row[2]; 

당신이 시도 교체? 및/또는'console.log (data)'의 앞이나 뒤에'JSON.parse'가 있습니까? – Jeff

+0

거의 똑같은 것을 출력하는 @Jeff는 전진 할 때마다 슬래시를받습니다. – nj51

답변

2

분명히, 당신의 $row[2]는 JSON 객체입니다. JSON으로 PHP에서 MIME 유형을 설정 :

+0

매우 좋은 캐치 !! – Jeff

+0

고마워,이 작품! 무슨 일이 일어 났는지 설명 할 수 있는지 궁금합니다. 먼저 자바 스크립트에서 객체를 문자열 화하고 Ajax 요청을 전송하여 서버 측에 보냈습니다. 그런 다음이를 mysql 테이블의 행에 삽입했습니다. 왜 내가 그 행을 디코드하여 다시 인코딩하도록 인코딩해야합니까? – nj51

+0

'$ row [2]'는 행이 아닌 필드이며 문자열 (문자열 화 된 객체)로 저장됩니다. 자세한 설명을 제공하기 위해 코드를보아야합니다! –

관련 문제