2011-08-21 3 views
1

아약스가 php 아래를 호출하고 json 배열이 반환 될 것으로 기대합니다. 데이터 준비가되었지만 올바르게 반환하는 방법을 모르는 것 같습니다. print_r($files,TRUE) 나에게PHP에서 배열을 올바르게 아약스 호출로 반환하는 방법은 무엇입니까?

Output = Array 
(
    [0] => {"data":"2011-08-07--02:30:05","attr":{"rel":"file","timestamp":"20110807023005w"}} 
    [1] => {"data":"2011-07-31--02:30:09","attr":{"rel":"file","timestamp":"20110731023009w"}} 
    [2] => {"data":"2011-07-24--02:30:09","attr":{"rel":"file","timestamp":"20110724023009w"}} 
) 

그러나 print_r($files,TRUE) 반환 아무것도 제공하지

$files = array(); 
foreach($db2_databaselist as $db) { 

    $file = new stdClass(); 
    $file->data = date('Y-m-d--H:i:s',strtotime($db)); 
    $file->attr = new stdClass(); 
    $file->attr->rel = "file"; 
    $file->attr->timestamp = $db.$type[0]; 

    $files[] = json_encode($file); 
} 
    echo "<pre>Output = " . print_r($files,TRUE) . "</pre>"; 
    echo "<BR><BR><BR>"; 
    print_r($files, TRUE); 

.

어떻게 PHP는 일이 같은

[ 
{"data":"2011-08-07--02:30:05","attr":{"rel":"file","timestamp":"20110807023005w"}}, 
{"data":"2011-07-31--02:30:09","attr":{"rel":"file","timestamp":"20110731023009w"}}, 
    [2] => {"data":"2011-07-24--02:30:09","attr":{"rel":"file","timestamp":"20110724023009w"}} 
] 

답변

2

당신은 루프 후 JSON 인코딩이 필요하지 않습니다 반환 할 수 있습니다.implode이 필요합니다. 배열 값은 이미 JSON 문자열이므로 json_encode를 사용하면 문자열 만 이스케이프 처리됩니다.

대신 :

echo '['.implode(',',$files).']'; 

OR! 대신이 같을 것이다

$files[] = json_encode($file); 

그리고 루프의 끝 :이 줄에로 json_encode를 건너 뛸 수

$files[] = $file; 
} 

$files = json_encode($files); 
+0

:-) 당신 말이 맞아요! 탈출했다. 고맙습니다. – Radek

+1

두 번째 솔루션이 더 마음에 듭니다. 당신이 발견 한 것이 대단합니다. – Radek

+0

@Radek 처음 엔 json_encode가 보이지 않았다. – cwallenpoole

0

당신이 json_encode PHP 함수를 사용할 필요가

print json_encode($files); 
-1

echo json_encode($files)해야 충분하십시오

관련 문제