2016-11-08 55 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));