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:
Sie haben die Daten echo Sie zurückkehren will. @ Metio_1993 –
Auch wenn ich die Daten Echo, nichts passiert –
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? –