Mam kod Ajaxa :

  1. $.post("/pulpit/web/app_dev.php/page/change", {
  2. 'tab[]': tab
  3. },
  4. function(data) {
  5. alert(data);
  6. },
  7. 'json'
  8. );


który odwołuje się do metody w Symfony2

  1. /**
  2.   *
  3.   * @Route("/change", name="change")
  4.   * @Template()
  5.   * @Secure(roles="ROLE_USER")
  6.   */
  7. public function changeAction() {
  8.  
  9. $response = new Response();
  10. $response->headers->set('Content-type', 'application/json, text/javascript,');
  11. return $this->render('PulpitBundle:Page:change.json.twig', array('odp' => true), $response);
  12. }


wywołującej twiga z takim kodem:

  1. {odp:{{ odp }}}


Wszystko działa prawie ok, otrzymuje JSONa ale funkcja w Ajaxie nie wywołuje alertu tak jak by nie bylo 'data'.

Co może być przyczyną, albo co robię nie tam

--------------------------------------------------------------------------------------------------------------------

Problem udało mi się rozwiązać zamieszczę go może komuś się kiedyś przyda.

Kod Ajaxa podobny do przedniego tylko nie przesyłam tablicy a pojedynczą zmienna:

  1. $.post("/pulpit/web/app_dev.php/page/change", {
  2. name: 'Jan'
  3. },
  4. function(data) {
  5. alert(data.name);
  6. },
  7. 'json'
  8. );


A w kontrolerze wystarczyło zrobić coś takiego:

  1. use Symfony\Component\HttpFoundation\Response;
  2. /**
  3.  * Page controller.
  4.  *
  5.  * @Route("/page")
  6.  */
  7. class PageController extends Controller {
  8.  
  9. /**
  10.   *
  11.   * @Route("/change", name="change")
  12.   * @Template()
  13.   * @Secure(roles="ROLE_USER")
  14.   */
  15. public function changeAction() {
  16. return new Response(json_encode(array('name' => $_POST['name'])));
  17. }
  18. }


Twig w tym przypadku jest zbędny.