2014-09-08 4 views
0

Я пытаюсь просмотреть несколько строк из таблицы. У меня есть один AjaxController в Symfony, этот контроллер имеет следующую функцию:return json from ajaxcontroller symfony

use Symfony\Component\Serializer\Serializer; 
use Symfony\Component\Serializer\Encoder\JsonEncoder; 
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer; 
use Rowoco\AllgemeinBundle\Entity\Place; 
use Symfony\Component\HttpFoundation\JsonResponse; 
. 
. 
. 

public function defaultAjaxAction($job) 
{ 
    $user = $this->get('security.context')->getToken()->getUser(); 
    $userId = $user->getId(); 
    $result = $this->$job($userId); 

    // Initialisiert Serializer 
    $encoder = [new JsonEncoder()]; 
    $normalizer = [new GetSetMethodNormalizer()]; 
    $serializer = new Serializer($normalizer, $encoder); 
    $newData = $serializer->serialize($result, 'json'); 

    return new Response($newData); 
} 

public function getPlacelist($iduser) 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $request = Request::createFromGlobals(); 

    //if i put here a return 123, then the output in the javascript-console would return 123 
    $placeRepo = $em->getRepository("RowocoAllgemeinBundle:Place"); 
    $placeEntity = $placeRepo->findBy(
     array(), 
     array(), 
     $request->request->get("limitCount"), 
     $request->request->get("limitStart") 
    ); 
    return new JsonResponse(array('place' => $placeEntity)); 
} 

В моей JS-файл я называю его с помощью этой функции:

function getPlaces() 
{ 
    var data = {}; 
    data['limitCount'] = 10; 
    data['limitStart'] = 0; 

    var url = $("#pageparameter").data("url-getplacelist"); 

    $.ajax({ 
      type: "POST", 
      url: url, 
      data: data, 
      dataType: "json" 
     }) 
     .done(function(resp){ 
      console.log(resp); 
      $("#viewPlaces").html(resp.place.description); 
     }) 
     .error(function(){ 
      console.log("No connection"); 
     }); 

} 

В таблице, у меня есть 2 строки и посмотреть их в верстаке.

Я не использую репозиторий. Я использую только основные функции из symfony.

+0

И какой у Вас вопрос? – dmnptr

ответ

1

Используйте встроенный класс JsonResponse, чтобы вернуть ответ JSON. Так что в вашем getPlaceList действия контроллера, добавить что-то вроде этого в конце:

use Symfony\Component\HttpFoundation\JsonResponse; 

... 

return new JsonResponse(array('place' => $placeEntity)); 
+0

$ ("#viewPlaces"). Html (resp.place.description); Но теперь я не получаю запись в jquery-файле. Как я могу теперь использовать json? –

+1

Обычно вы перебираете ответ с помощью jQuery '.each()', например: '$ .each (response, function (key, value) {...}); '. –

0

я не знаю, почему i'm используя все время

$resp = array ( 
    "foo" => "bar" 
); 


return @json_decode(@json_encode($resp),1); 

, но он всегда работает очень хорошо