2016-11-08 64 views
0

我会尽力解释我的问题。我有一个实体与另外两个具有多对多关系的实体结合在一起。我想要实现的是使用ajax post方法进行搜索,并接收连接表中连接的所有可能的组合。从Ajax发布请求中接收空对象

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

控制器:

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)); 
    } 

在这一点上,我想送$触点阵列我收到的是空(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

+0

你要呼应出你想要返回的数据。@ Metio_1993 –

+0

即使我附和数据,没有什么发生 –

+0

您是否观看过浏览器的开发人员工具中的AJAX请求/响应?你有没有在项目中包含jQuery库?是否有任何错误报告?你在网络服务器上运行这个吗? –

回答

0

我已经设法找到whee的错误了。

格式是麻烦,所以我在JSON

安装JMSSerializerBundle和转换的数据
$serializer = $this->container->get('serializer'); 
    $reports = $serializer->serialize($cables, 'json'); 
    $reports1 = $serializer->serialize($contacts, 'json'); 
    return new JsonResponse (array($reports1, $reports));