Как правильно вернуть массив в вызов ajax в php? - PullRequest
1 голос
/ 21 августа 2011

ajax вызывает ниже php и ожидает возврата массива json.Я думаю, что у меня есть готовые данные, но я не знаю, как их правильно вернуть.

<code>$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) . "
"; echo"


"; print_r ($ files, TRUE);

, где print_r($files,TRUE) дает мне

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) ничего не возвращает.

Как мне заставить 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"}}
]

Ответы [ 3 ]

2 голосов
/ 21 августа 2011

Вам не нужно кодировать json после цикла. Вам нужно implode.Значения вашего массива уже являются строками JSON, что означает, что использование json_encode будет экранировать только строки!

Вместо:

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

ИЛИ!Вы можете пропустить json_encode в этой строке:

$files[] = json_encode($file);

И конец цикла будет выглядеть так:

    $files[] = $file;
}

$files = json_encode( $files );
0 голосов
/ 21 августа 2011

echo json_encode($files) должно быть достаточно

0 голосов
/ 21 августа 2011

вам нужно использовать json_encode php функцию

print json_encode($files);
...