php json_encode不会导致真实对象 /将数组字符串变成真实对象 /将php数组转换为JSON

StackOverflow https://stackoverflow.com/questions/4293295

这是我的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);
    });
});
有帮助吗?

解决方案

我看到您正在使用jQuery,如果您希望数据作为JSON对象回到您身边,则需要做2件事中的1件事。

  1. 将标题(“ content-type:application/json”)添加到您的PHP文件中,这将告诉jQuery将其转换为JSON对象而不是作为文本

  2. 将第四参数添加到您的$ .post,

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

如果您的PHP代码失败并输出HTML,这将告诉JQUERY致电您的错误处理程序。您真的应该使用$ .ajax,我不知道为什么有人使用$。

其他提示

JSON 字符串。如果您想迭代它,则需要对其进行解码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top