1

这是我的 PHP 代码,它从 mongodb 获取集合列表

$list = $db->dbname->listCollections();
$result = array();
$i=0;
foreach ($list as $thiscollection) {
    $result[$i++] = $thiscollection->getName();
}
echo json_encode( $result );

我在回调中执行 console.log,这就是我所看到的。

["fruits", "dogs", "cars", "countries"]

问题是这是一个字符串,而不是一个数组。我需要遍历这些值。我如何把它变成一个真实的对象或让 php 给我 json 而不是 php 数组,这样我就可以在它上面使用 parseJSON。

谢谢。

js:

$.post('/ajax-database.php', function (data) {
    console.log($.parseJSON(data));
    $.each(data, function (key, value) {
        console.log(value);
    });
});
4

2 回答 2

3

我看到您正在使用 jquery,如果您希望数据作为 json 对象返回给您,您需要做 2 件事中的 1 件事。

  1. 将 header("Content-Type: application/json") 添加到您的 php 文件中,这将告诉 jquery 将其转换为 json 对象而不是文本

  2. 在 $.post 中添加第四个参数,

$.post('/ajax-database.php', function (data) {
    console.log($.parseJSON(data));
    $.each(数据,函数(键,值){
        控制台.log(值);
    });
}, "json");

如果它不是 json,它将告诉 jquery 调用您的错误处理程序,例如如果您的 php 代码失败并改为输出 html。你真的应该使用 $.ajax,我不知道为什么有人使用 $.post,你不能做任何有意义的错误处理。

于 2010-11-27T19:21:59.920 回答
0

JSON字符串。如果您希望能够对其进行迭代,那么您需要对其进行解码。

于 2010-11-27T19:12:13.110 回答