gpt4 book ai didi

javascript - 为什么 PHP json_encode 会忽略空数组?

转载 作者:搜寻专家 更新时间:2023-10-31 21:03:22 24 4
gpt4 key购买 nike

我有以下将数据发送到 PHP 函数的 javascript:

<script>
var mydata = {
id:123,
name: 'mike',
orders: []
};

$.ajax({
type: 'POST',
url: 'test.php',
data: {save_data:mydata},
success: function(data) {
alert('php received: ' + data);
}
});
</script>

我的 test.php 文件包含以下代码:

<?php
if (isset($_POST['save_data'])) {
$json = json_encode($_POST['save_data']);
echo $json; // just to check what has been received
exit();
}
?>

我期望从 PHP 收到的是:{"id":"123","name":"mike","orders":"[]"}

我得到的是 {"id":"123","name":"mike"}

请注意 orders 数组已从输出中删除。没有占位符。我尝试在数组中添加一些虚拟元素,效果很好,我收到了带有元素的数组。

我需要 PHP 按原样接收 json 对象,即使它包含空数组也是如此。

我该怎么做?

最佳答案

JSON 对象是在 PHP 中创建的。在此之前,您只有表单数据。

jQuery 将以 PHP 友好的风格对表单数据进行编码。

如果你给它:

data: { foo: [1, 2, 3] }

它将转换为:

foo[]=1&foo[]=2&foo[]=3

(尽管它会对 [] 进行百分比编码)

每个值都有一个键=值对。

如果你有一个空数组,那么你就没有任何值,所以你不会得到任何键=值对。

无法使用 PHP 对表单 url 编码语法的扩展来编码“空数组”。


您有两个基本选择:

  1. 预先告诉 PHP 您想要创建什么数据结构,并让它填充空数组。
  2. 在客户端生成 JSON

关于javascript - 为什么 PHP json_encode 会忽略空数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37294855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com