代码之家  ›  专栏  ›  技术社区  ›  Mark

php json_encode不产生真正的对象/将数组字符串变成真正的对象/将php数组变成json

  •  1
  • Mark  · 技术社区  · 14 年前

    这是我的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);
        });
    });
    
    2 回复  |  直到 14 年前
        1
  •  3
  •   Rahly    14 年前

    我看到您正在使用jquery,如果您希望数据以json对象的形式返回给您,您需要做两件事情中的一件。

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

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

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

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

        2
  •  0
  •   Ignacio Vazquez-Abrams    14 年前

    JSON格式 串。如果你想迭代它,那么你需要解码它。