javascript - PHP JSON 无法回显值,总是返回数组?

标签 javascript php ajax json

我最近开始使用 Json 和 ajax。

我有这个 JavaScript 代码:

var json = {
    "test": [{
        "number":1,
        "char":"hey",
        "bool":true
    }]
};
$.ajax({
    url: "json.php",
    type: "POST",
    contentType: "application/json",
    data: {json: JSON.stringify(json)},
    success: function(res) {
        $("#box").html(res);
    }
});

几分钟前,这段代码运行得非常好,当我echo $json['test']['number'];时,它返回了1

但现在这根本不起作用,它说 'json' 索引未定义,因此我尝试使用 contentType: "application/x-www-form-urlencoded", ,它确实工作,但我根本无法获取数组项。

如果我不在 json_decode() 函数中传递 true 参数,我将收到以下错误:

Cannot use object of type stdClass as array

如果我这样做,我将无法获取数据,但响应会显示“Array”。

这就是我所呼应的:

$json = $_POST['json'];
$json = json_decode($json, true);
echo $json['test'][0];

这是我的 $json var_dump:

array(1) {
  ["test"]=>
  array(1) {
    [0]=>
    array(3) {
      ["number"]=>
      int(1)
      ["char"]=>
      string(3) "hey"
      ["bool"]=>
      bool(true)
    }
  }
}

为什么要这么做?为什么我不能在不返回数组的情况下从中获取值?

最佳答案

鉴于此:

var json = {
    "test": [{
        "number":1,
        "char":"hey",
        "bool":true
    }]
};

您的 PHP 代码

$json['test']['number'];

如果test不是数组,那么首先可以工作。上面的 JavaScript 代码看起来像:

json.test.number;

但是test是一个Array;它没有 number 属性。在 JavaScript 中,这将是查找数字的正确方法:

json.test[0].number;

您需要在 PHP 中执行相同的操作:

$json['test'][0]['number'];

关于javascript - PHP JSON 无法回显值,总是返回数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19339449/

相关文章:

javascript - 当选定的单选按钮更改时从 MySQL 数据库检索图像引用

javascript - 单击时如何使元素始终 float 在顶部?

javascript - 如何将 Node.js 变量放入我的 <script></script> 中?

php - QuickSort:当 Pivot 交换位置时无法理解部分

php - 在 PHP 中多次调用 MySQL 存储例程

javascript - 在 javascript 中实现时显示 mouse_id 未定义的错误

javascript - 使用 HTML 表单值进行 AJAX/PHP MySqli 查询

javascript - es6类中如何声明私有(private)变量和私有(private)方法

javascript - React 组件的这两种实现有什么区别?

javascript - 在不离开页面和 bootstrapValidator 的情况下发送联系表