Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony2][Symfony][SF2] Problem z odczytem odpowiedzi ajax
michau85
post
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 3.01.2010

Ostrzeżenie: (0%)
-----


Witajcie

Poprzez żądanie ajax przekazuje parametr do kontrolera.Parametr ten wykorzystuje do pobrania z bazy tablicy obiekietów
  1. public function ajaks2Action(Request $request) {
  2.  
  3.  
  4. $tag = $request->request->get('tag');
  5. $repository = $this->getDoctrine()->getRepository('SklepBundle:Ksiazka');
  6. $qb = $repository->createQueryBuilder('k');
  7. $qb->where('k.autor LIKE :autor OR k.tytul LIKE :tytul ');
  8. $qb->setParameter('autor', '%' .$tag. '%');
  9. $qb->setParameter('tytul', '%' .$tag. '%');
  10. $tab = $qb->getQuery()->getResult();
  11. $s=json_encode($tab);
  12. return new Response($s);
  13. }
  14.  


Mam jednak problem z wyświetleniem rezeltatów. Gdy chce wyświetlić pojedyńczą wartość (tak jak kodzie poniżej) - nie dostaję nic.

  1. $.ajax({
  2. url: "{{ path('ajaks2') }}",
  3. type: "POST",
  4. dataType: 'json',
  5. data: {"tag": te},
  6. success: function (data) {
  7. $('#res').text(data[0]['autor'])
  8.  
  9. }
  10. });
  11.  


Gdy w parametrze success wpiszę $('#res').text(data)) to jako wynik wyrzucane są zakodowane obiekty [object Object],[object Object]

Z góry dziekuje za pomoc

P.S Jeśli w kontrolerze zamiast doctrine stworzę własną tablicę - wszystko działa bez zarzutu. Mogę bez problemu odwoływać się do konkretnych elementów.

Ten post edytował michau85 27.09.2016, 19:27:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Pozwolę sobie dodać parę wskazówek:
1. Polecam narzędzie do debugowania dostarczane wraz z frameworkiem - profiler. Każdy request (także via ajax) jest szczegółowo rozpisany
2.
  1. $tag = $request->request->get('tag');
- nie poleca się używania parametrów wprost z requesta, powinna być walidacja, formularz, param converter etc.
3.
  1. $repository = $this->getDoctrine()->getRepository('SklepBundle:Ksiazka');
- pomijając kwestie nazewnictwa, repozytoria powinny być rejestrowane jako serwisy i wstrzykiwane jako zależność, powinno się unikać korzystania z kontenera
4.
  1. $qb = $repository->createQueryBuilder('k');

- do tak prostego zapytania raczej nie jest potrzebny query builder, wystarczy użyć gotowych, frameworkowych metod do wyszukiwania
- po co korzystać z ORM jak i tak piszemy zapytania "z palca" a wynik zrzucamy do tablicy? Lepiej wtedy używać czystego PDO - odpada nauka doctrine + DQL + narzut wydajności
- kontroler nie jest odpowiednim miejscem do obróbki danych
5.
  1. $s=json_encode($tab);
  2. return new Response($s);
- framework powinien już zawierać metodę JsonResponse
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.10.2025 - 04:08