Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony2][Symfony][SF2] Problem z odczytem odpowiedzi ajax
michau85
post 27.09.2016, 16:12:52
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
nospor
post 27.09.2016, 16:15:53
Post #2





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6296
Dołączył: 27.12.2004




Nie sadzisz ze najszybciej by bylo sprawdzic co tam masz?

console.log(data);

I wszystko nagle staje sie jasne


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michau85
post 27.09.2016, 16:33:50
Post #3





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

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


Nie znałem tego polecenia. Wstawiłem je i nie działa. sad.gif
Go to the top of the page
+Quote Post
kpt_lucek
post 27.09.2016, 17:30:11
Post #4





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


@up
Żeby nie było, to polecenie w JS wink.gif
[JAVASCRIPT] pobierz, plaintext
  1. function (data) {
  2. console.log(data);
  3.  
  4. }
[JAVASCRIPT] pobierz, plaintext


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


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
michau85
post 27.09.2016, 17:48:26
Post #5





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

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


Wstawiłem do parametru success i w oknie przeglądarki jest pusto
  1.  
  2. $.ajax({
  3. url: "{{ path('ajaks3') }}",
  4. type: "POST",
  5. dataType: 'json',
  6. data: {"tag": te},
  7. success: function (data) {
  8. console.log(data)
  9.  
  10. }
  11. });
  12.  


Ten post edytował michau85 27.09.2016, 17:52:09
Go to the top of the page
+Quote Post
kpt_lucek
post 27.09.2016, 17:59:22
Post #6





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


Dlaczego w oknie przeglądarki?

Korzystasz z narzędzi developerskich dostarczonych do przeglądarki (nawet IE je ma biggrin.gif)?


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


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
michau85
post 27.09.2016, 18:43:49
Post #7





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

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


Ok dzięki, już widzę że mam puste obiekty bez żadnych wlaściwości. Nie wiem tylko dlaczego.
Go to the top of the page
+Quote Post
Boshi
post 27.09.2016, 18:45:52
Post #8





Grupa: Zarejestrowani
Postów: 342
Pomógł: 15
Dołączył: 30.08.2011

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


prawdopodobnie musisz użyć
https://developer.mozilla.org/en-US/docs/We.../JSON/stringify

jak Ty używasz ajaxa bez sprawdzania co ci zwraca przez narzędzia dev haha.gif da się to tak?

http://stackoverflow.com/questions/9218900...n-object-object

Ten post edytował Boshi 27.09.2016, 18:46:59
Go to the top of the page
+Quote Post
michau85
post 27.09.2016, 19:25:00
Post #9





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

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


Dzięki za wskazówki. JSON.stringify () nie pomogło. sad.gif Pomijając zastosowanie dodatkowych funkcji to 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:29:34
Go to the top of the page
+Quote Post
maly_swd
post 28.09.2016, 11:57:46
Post #10





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


daj $tab = $qb->getQuery()->getResult(AbstractQuery::HYDRATE_ARRAY)

a na samej górze klasy USE Doctrine\ORM\AbstractQuery;


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post
michau85
post 28.09.2016, 17:23:43
Post #11





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

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


Cytat(maly_swd @ 28.09.2016, 12:57:46 ) *
daj $tab = $qb->getQuery()->getResult(AbstractQuery::HYDRATE_ARRAY)

a na samej górze klasy USE Doctrine\ORM\AbstractQuery;



DziałA!!! Bardzo serdecznie Ci dziękuję smile.gif smile.gif
Go to the top of the page
+Quote Post
Pilsener
post 7.10.2016, 08:17:50
Post #12





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

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 20:38