Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][Symfony2][SF2] 302 Found
Forum PHP.pl > Forum > PHP > Frameworki
damianooo
Nie wiem czy dobrze przesyłam dane AJAXem w formacie JSON

Firebug pokazuje 302 Found a powinien chyba 200 OK.
W zakładce Net -> Response powinien być widoczny wysyłany obiekt JSON a jest tylko treść strony.

Co może być nie tak ?

czy mam to dobrze zapisane w Symfony?

Kontroler:

  1. /**
  2.   * @Route(
  3.   * "/types",
  4.   * name = "typerka_types"
  5.   * )
  6.   * @Template()
  7.   *
  8.   */
  9. public function typesAction(Request $request){
  10.  
  11. $repository = $this->getDoctrine()->getRepository('MyTyperkaBundle:Match');
  12. $matches = $repository->getMatchesPerMatchday(1);
  13.  
  14. if ($request->getMethod() == 'POST') {
  15.  
  16. $request = $this->getRequest();
  17. $req = $request->request->all();
  18. ...


TWIG:

  1. {% extends "MyTyperkaBundle::base.html.twig" %}
  2. {% block content %}
  3. <p>Witaj {{ app.user ? app.user.username }} </p>
  4.  
  5. {#<form action="{{ path('typerka_types') }}" method="post">#}
  6. <form id="form">
  7. ...
  8. ...
  9. <input type="submit" value="Wyślij"/>
  10. </form>
  11.  
  12. <script type="text/javascript">
  13.  
  14. $(function(){
  15. $("#form").submit(function(e){
  16. var form=$(this);
  17. $.ajax({
  18. url:"{{ path('typerka_types') }}",
  19. dataType:"JSON",
  20. type:"POST",
  21. data:form.serialize(),
  22. success:function(){
  23. console.log("jest ok");
  24. },
  25. error: function() {
  26. console.log("Wystąpił błąd");
  27. form.get(0).reset();
  28. }
  29. });
  30. e.preventDefault();
  31. });
  32. });
  33.  
  34.  
  35. {% endblock %}

ohm
A masz obsługę JSONa? Bo z tych fragmentów widzę że wysyłasz dane z formularza tak jak byś to robił normalnie, bez użycia ajaxa, więc dostajesz zwykły wyrenderowany zwrot (@Template)
damianooo
co znaczy obsługę JSONa ? ...
chodzi Ci o odebranie danych w kontrolerze ?

ohm
Jak chcesz komunikować się przez JSONa to kontroler musi wysyłać JsonResponse.
Przeanalizuj sobie jak to wygląda na przykładach http://intelligentbee.com/blog/2015/01/19/...forms-and-ajax/
damianooo
Nie rozumiem tego chyba.
Ten przykład nie bardzo wiem jak wykorzystać u mnie.
Jak to u mnie w kodzie powinno wyglądać ?

Mam formularz, który po wypełnieniu danymi chcę przesłać te dane do bazy danych.
Technikę przesyłu wybrałem Ajax typ: JSON.
W kontrolerze odbieram tylko przesłane dane aby ja później ewentualnie obrobić i zapisać do bazy.

Możesz wyjaśnić mi działanie JSONa tak na chłopski rozum ?






ok poradziłem sobie ...

trzeba było dodać w kontrolerze przestrzeń:
use Symfony\Component\HttpFoundation\JsonResponse;
a następnie użyć tej klasy w akcji zastępując po prostu:
return $this->redirect($this->generateUrl('typerka_types'));
poniższym kodem z przykładu:
return new JsonResponse(array('message' => 'Success!'), 200);

Teraz otrzymuję normalnie w firebugu 200 OK i mam w zakłądce Response obiekt JSON, widać również w końcu w firebugu zakładkę JSON.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.