我正在使用symfony3:
我通过ajax调用调用方法:
控制器
/**
* @Route("personnel/domainlist/{id}", name="ajax_method")
* @Method("GET")
*/
public function domainlist(Request $request,$id){
$repository = $this->getDoctrine()->getRepository('AppBundle:ENTITYNAME');
$res=$repository->findBy(array('COLNAME' => $id));
// create a JSON-response with a 200 status code
$response = new Response(json_encode($res));
$response->headers->set('Content-Type', 'application/json');
return $response;
die;
}
以上代码形式我得到以下结果: 的print_r($ RES);
Array
(
[0] => AppBundle\Entity\ENTITYNAME Object
(
[domain_id:AppBundle\Entity\ENTITYNAME:private] => 15
[domain_title:protected] => ABC
[domain_group_id:protected] => 1
)
)
AJax代码:
$.ajax({
url: "domainlist/" + pdoamin_id,
type: 'POST',
dataType: 'json',
success: function(result) {
alert(result);
}
});
});
任何人都可以帮助我如何在symfony3中将json返回给ajax方法
答案 0 :(得分:1)
在将其推送到Response之前,您必须序列化您的答案。 有两种方法可以做到(至少我只知道两种方式)
在两种变体中,您的json_encode函数都可以正常工作。
我更喜欢第二种方式,因为它的简单性
答案 1 :(得分:0)
$repository = $this->getDoctrine()->getRepository('AppBundle:ENTITYNAME');
$res=$repository->findBy(array('COL_NAME' => $id));
$normalizer = new ObjectNormalizer();
$encoder = new JsonEncoder();
$serializer = new Serializer(array($normalizer), array($encoder));
$response=$serializer->serialize($res, 'json');
答案 2 :(得分:0)
不确定Symfony 3是否具有该类,但是在Symfony 4中,可以使用JsonResponse类。
将类导入您的控制器
use Symfony\Component\HttpFoundation\JsonResponse;
然后在您的return语句中使用其构造函数之一:
return new JsonResponse($dataToReturn);
对我有用。