2016-11-08 3 views
0

Ich werde versuchen, mein Problem zu erklären. Ich habe eine Entität, die mit zwei anderen Entitäten mit vielen zu vielen Beziehungen verbunden ist. Was ich erreichen möchte, ist mit ajax post-Methode zu suchen, und erhalten Sie alle möglichen Kombinationen, die in den verbundenen Tabellen verbunden sind.Empfangen leeres Objekt von Ajax Post Anfrage

Mein echtes Problem ist, dass ich gültige Rückrufdaten nur dann erhalte, wenn ich nur in der ersten Entität suche.

Der Controller:

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

An dieser Stelle ich die $ Kontakte Array gesendet werden soll ich empfangen ist leer (NULL), aber noch interessanter ist [{}, {}, {}, {}, { }] Die Anzahl der geschweiften Klammern entspricht der Anzahl der Kontakte, die ich erhalten soll !!

Und wenn die kommentierte Zeile unkommentiert ist und $ Data als Antwort gesendet wird, gibt es keine Probleme.

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

        } 
       ); 
      }) 
      } 
     ); 

würde ich Ihre Hilfe

schätzen hier meine Konsolenausgabe ist:

enter image description here

+0

Sie haben die Daten echo Sie zurückkehren will. @ Metio_1993 –

+0

Auch wenn ich die Daten Echo, nichts passiert –

+0

Haben Sie die AJAX-Anfrage/Antwort in den Browser-Entwickler-Tools beobachtet? Haben Sie die jQuery-Bibliothek in das Projekt aufgenommen? Werden Fehler gemeldet? Laufen Sie das auf einem Webserver? –

Antwort

0

schaffe ich habe zu finden whee der Fehler war.

Das Format war das Problem, also ich installiert JMSSerializerBundle und die konvertierten Daten in JSON

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