如何正确地将数组返回到php中的ajax调用?

时间:2011-08-21 07:33:55

标签: php arrays json

ajax在php下面调用并期望返回一个json数组。我想我已准备好数据,但不知道如何正确地返回它们。

$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);

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 个答案:

答案 0 :(得分:2)

在循环之后你不需要json编码。你需要 implode 。您的数组值已经是JSON字符串,这意味着使用json_encode只会转义字符串!

相反:

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

OR!你可以在这一行跳过json_encode:

$files[] = json_encode($file);

循环的结束将会是这样的:

    $files[] = $file;
}

$files = json_encode( $files );

答案 1 :(得分:0)

你需要使用json_encode php函数

print json_encode($files);

答案 2 :(得分:-1)

echo json_encode($files)应该足够了