如何在symfony2控制器中发送JSON响应

2022-08-30 07:47:56

我正在使用编辑内置的表单。jQuerySymfony

我在对话框中显示表单,然后提交它。jQuery

数据在数据库中正确输入。

但是我不知道我是否需要将一些发回.其实我对事情有点困惑。JSONjQueryJSON

假设我用''jQuery在我的表中添加了一行,当我提交表单时,然后在提交数据后,我想发回这些行数据,以便我可以动态添加表行以显示添加的数据。

我很困惑如何才能取回这些数据。

这是我当前的代码:

$editForm = $this->createForm(new StepsType(), $entity);

$request = $this->getRequest();

$editForm->bindRequest($request);

if ($editForm->isValid()) {
    $em->persist($entity);
    $em->flush();

    return $this->render('::success.html.twig');               
}

这只是带有成功消息的模板。


答案 1

Symfony 2.1

$response = new Response(json_encode(array('name' => $name)));
$response->headers->set('Content-Type', 'application/json');

return $response;

Symfony 2.2 及更高版本

你有特殊的JsonResponse类,它将数组序列化为JSON:

return new JsonResponse(array('name' => $name));

但是,如果您的问题是如何序列化实体,那么您应该看看JMSSerializerBundle

假设您已经安装了它,那么您只需要做

$serializedEntity = $this->container->get('serializer')->serialize($entity, 'json');

return new Response($serializedEntity);

您还应该在StackOverflow上检查类似的问题:


答案 2

Symfony 2.1 有一个 JsonResponse 类。

return new JsonResponse(array('name' => $name));

传入的数组将采用 JSON 编码,状态代码将默认为 200,内容类型将设置为 application/json。

JSONP还有一个方便的功能。setCallback