php Symfony将包含对象的数组发送到javascript

disho6za  于 2023-02-15  发布在  PHP
关注(0)|答案(2)|浏览(115)

在 AJAX 请求之后,如何将对象(实体)数组发送回Javascript?如果我使用JSON响应返回包含对象的数组,则数组在Javascript中为空。

array:2 [
  0 => App\Entity\Firewalls {#744
    -id: 2
    -ip: "test.com"
    -user: "admin"
    -pass: "pw"
    -status: App\Entity\Status {#741
      -id: 2
      -status: "Finalize"
      -update: null
      -time: null
      -firewall: App\Entity\Firewalls {#744}
    }
  }
bhmjp9jg

bhmjp9jg1#

我会先对json进行如下编码

$firewalls = [ your firewalls ];
$json = json_encode($firewalls);
echo $json;

然后再解析回来

$.ajax({
  type: "POST",
  url: "server.php",
  dataType: "json",
  success: function (firewalls) {
    console.log(firewalls);
  }
});

如果数据类型设置为json,jQuery应该会自动解析它,如果不起作用,请随时分享浏览器的开发工具。

dzhpxtsq

dzhpxtsq2#

你有composer require symfony/serializer吗?如果没有,我建议你使用它。
您可以使用symfony对象规范化器并将实体(或实体数组)序列化为JSON。

创建序列化程序:

use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;

$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];

$serializer = new Serializer($normalizers, $encoders);

并将其用于您的实体或实体:

$this->serializer->serialize($data, 'json');

You can read more about this here.

相关问题