我试图从我的数据库中获取类别列表并将其放入我的 javascript 代码中,以便我以后可以使用它。但是我遇到了这个任务的问题——在把这个列表返回给 javascript 之后——它们是空的。
这是我的 symfony2 控制器操作代码:
public function fetchCategoriesAction(){
$categories = $this->getDoctrine()->getRepository('MyDataBundle:Category')->findAll();
$return=array("responseCode"=>200, "categories"=>$categories);
$return=json_encode($return);//jscon encode the array
return new Response($return,200,array('Content-Type'=>'application/json'));
}
这是我的js代码:
变种类别;
函数类别加载(){
var url=$("#categories_fetch").val(); //link to my controller
$.post(url,function(data){
if(data.responseCode==200 ){
categories = data.categories;
console.log(categories);
}else{
console.log("An unexpeded error occured.");
}
});
}
我在跑
$(document).ready(function() {
categoriesLoad();
});
但是在使用 console.log(categories) 之后,我得到了空对象,尽管它们的数量与数据库中的记录数量相匹配。
我刚刚开始在 symfony2 中编程,我将不胜感激:)
编辑:
解决了
我刚刚更改了我的控制器操作代码。这里更新了:
public function fetchCategoriesAction(){
$encoders = array(new XmlEncoder(), new JsonEncoder());
$normalizers = array(new GetSetMethodNormalizer());
$serializer = new Serializer($normalizers, $encoders);
$em = $this->getDoctrine()->getManager();
$categories = $em->createQuery(
'SELECT u
FROM MyDataBundle:Category u'
)->getResult();
$categories = $serializer->serialize($categories, 'json');
$return=array("responseCode"=>200, "categories"=>$categories);
$return=json_encode($return);
return new Response($return,200,array('Content-Type'=>'application/json'));
}
现在它工作正常。感谢@Pawel 和@SAM