I'm new in Symfony i wanted to do some manipulation such I can get a list of all elemets in the entity Theme via Ajax but the answer is still "undefined" Here the code text strong
vue
$(document).ready(function () {
var $theme = $('#theme');
$theme.append('<option value="">Choisir un thème</option>');
$.ajax({
type: 'post',
url: '{{ path('web_site_liste_theme_cmb') }}',
dataType: 'json',
beforeSend: function () {
$('#themediv').append('<div id="loading" style=" float: left; display: block;"><img src="{{ asset('bundles/BackBundle/img/loadingicon.gif') }}"/></div>');
},
success: function (json) {
{#$('#theme').append({{ dump(json)}});#}
console.log(json.value);
$.each(json, function (index, value) {
//console.log(value);
$('#theme').append('<option value="' + value.id + '">' + value.name + '</option>');
$('#loading').remove();
});
}
});
});
Controller
public function ListeThemeAction(Request $request)
{
$em = $this->getDoctrine()->getEntityManager();
if ($request->isXmlHttpRequest()) {
$themes = $em->getRepository('WebSiteBackBundle:theme');
$themes = $themes->findAll();
//var_dump($themes);
return new JsonResponse($json);
}
return new JsonResponse('no results found', Response::HTTP_NOT_FOUND); // constant for 404
}
the server response is 200 OK, everything seems to work, I have the same number of data in the database but I can't read the objects values
and here is the : console.log(json)
well, i found the answer i had to change the controller to make it happen. thank you Yonel ! here is a link that helped me Json in controller
Controller
public function ListeThemeAction(Request $request)
{
$output=array();
$em = $this->getDoctrine()->getEntityManager();
if ($request->isXmlHttpRequest()) {
$themes = $em->getRepository('WebSiteBackBundle:theme');
$themes = $themes->findAll();
foreach ($themes as $theme){
$output[]=array($theme->getId(),$theme->getName());
}
/* var_dump($themes);
$json = json_encode($themes);
$response = new Response();*/
// return $response->setContent($json);
return new JsonResponse($output);
}
return new JsonResponse('no results found', Response::HTTP_NOT_FOUND);
}
Vue
$(document).ready(function () {
var $theme = $('#theme');
$theme.append('<option value="">Choisir un thème</option>');
$.ajax({
type: 'post',
url: '{{ path('web_site_liste_theme_cmb') }}',
dataType: 'json',
beforeSend: function () {
$('#themediv').append('<div id="loading" style=" float: left; display: block;"><img src="{{ asset('bundles/BackBundle/img/loadingicon.gif') }}"/></div>');
},
success: function (json) {
console.log(json);
$.each(json, function (index, value) {
//console.log(value);
$('#theme').append('<option value="' + value[0]+ '">' + value[1] + '</option>');
$('#loading').remove();
});
}
});
});
Hoping it will help someone. thank you all for your answer it helped me a lot