从Ajax发布请求中接收空对象

时间:2016-11-08 13:44:37

标签: php ajax post symfony

我会尝试解释我的问题。我有一个实体,它与另外两个具有多对多关系的实体相连。我想要实现的是使用ajax post方法进行搜索,并接收连接表中连接的所有可能组合。

我真正的问题是,只有在第一个实体中搜索时,才会收到有效的回调数据。

控制器:

if ($request->isXmlHttpRequest()) {


       $name = $request->request->get('person_name');
       /** @var EntityRepository $repository */
       $repository = $this->getDoctrine()->getManager()->getRepository('AppBundle:Connectors');
       $qb = $repository->createQueryBuilder('connectors')
           ->leftJoin('connectors.contacts', 'contacts')
           ->leftJoin('contacts.cables', 'cables');

       $qb->where('connectors.description LIKE :param');
       $qb->setParameter('param','%'.$name.'%');

       $connectors = [];
       $contacts = [];
       $cables = [];

       foreach ($qb->getQuery()->getResult() as $connector) {
           $connectors[] = $connector;
           foreach ($connector->getContacts() as $contact) {
               $contacts[] = $contact;
               foreach ($contact->getCable() as $cable) {
                   $cables[] = $cable;
               }
           }
       }

      // $Data = $qb->getQuery()->getArrayResult();
       return new JsonResponse(json_encode($contacts));
   }

此时我想发送我收到的$ contacts数组为空(NULL),但更有趣的是[{},{},{},{},{}]大括号的数量相同我想接受的联系人!!

如果注释行未注释且$ Data作为响应发送,则没有问题。

JS

$('#call_back_btn' ).click(function() {
                 $.post("/app_dev.php/AjaxSearch" ,
                     {
                     person_name:$('#input_text').val()
                     } ,
                     function (data)
                     {
                         console.log(data);
                          var obj =  JSON.parse(data);
                         console.log(obj);

                         // for (var key in data)
                         // {
                         //     if(data.hasOwnProperty(key)){
                         //         console.log(data);
                         //     }
                         // }

                     $('#resposeText').val(obj[1].description);

                     }
                 );
             })
            }
        );

感谢您的帮助

这是我的控制台输出:

enter image description here

1 个答案:

答案 0 :(得分:0)

我已经设法找到了错误。

格式是麻烦,所以我安装了JMSSerializerBundle并将数据转换为JSON

$serializer = $this->container->get('serializer');
    $reports = $serializer->serialize($cables, 'json');
    $reports1 = $serializer->serialize($contacts, 'json');
    return new JsonResponse (array($reports1, $reports));