php json_encode 不会产生真实对象/将数组字符串转换为真实对象/将 php 数组转换为 json

标签 php jquery ajax arrays mongodb-php

这是我的 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 对象返回给您,您需要执行两件事中的一件。

  1. 将 header("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");

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

关于php json_encode 不会产生真实对象/将数组字符串转换为真实对象/将 php 数组转换为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4293295/

相关文章:

javascript - 如何在向 dom 元素添加类后强制 ie8 重新绘制

javascript - AJAX PHP 邮件表单

jquery - 一个 Controller 操作同时用于完整回发和 AJAX 回发还是分为两个操作?

php - 是否可以在 : PHP or Java Script or AJAX 中自动刷新 MySQL 更改的 DIV

php - 每 X 秒(异步)从数据库访问数据的最佳方式

php - 检查基于php变量的单选按钮

php - MySQL 事务查询是否可以提高多个 SELECT 语句的性能?

javascript - Rails jquery ajax 调用未触发

javascript - 如何从两部分类设置中删除一个类值

javascript - AJAX JavaScript 表单捕获文件下载并获取文件信息