我正在尝试获得AJAX响应,因此我可以摆弄它以使表单更易于使用。当我使控制器(下面的代码)使用返回正常响应时var_dump(),我得到了对象的输出,因此我知道查询没有错(我使用ID 1进行查询调试)。但是,当我使用返回输出时json_encode(),我只会得到一个空的JSON文件。
var_dump()
json_encode()
<div id="content"> <form id="myForm" action="{{path('snow_ajax')}}" method="POST" > Write your name here: <input type="text" name="name" id="name_id" value="" /><br /> <input type="submit" value="Send" /> </form> </div>
<script type="text/javascript"> $(document).ready(function() { $("#myForm").submit(function(){ var url=$("#myForm").attr("action"); $.post(url,{ formName:"ajaxtest", other:"attributes" },function(data){ if(data.responseCode==200 ){ alert("Got your json!"); } else{ alert("something went wrong :("); } }); return false; }); }); </script>
public function ajaxAction() { $location = $this->getDoctrine()->getRepository('SnowFrontBundle:Location') ->find(1); $output = var_dump($location); return $output; }
public function ajaxAction() { $location = $this->getDoctrine()->getRepository('SnowFrontBundle:Location') ->find(1); return new Response(json_encode($location), 200); }
有人可以帮我吗?这真让我发疯!
我设法通过使用Doctrine2的实体管理器来修复它,以将结果存储在数组中,然后我将其编码为JSON。我不确定这是否是最干净的方法(根据我的IDE,getEntityManager()似乎已被弃用),但目前效果良好。
public function ajaxAction() { $em = $this->getDoctrine()->getEntityManager(); $query = $em->createQuery('SELECT l FROM Snow\FrontBundle\Entity\Location l WHERE l.id=:id'); $query->setParameter('id', 1); $result = $query->getArrayResult(); return new Response(json_encode($result), 200); }