Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP+Symfony] Symfony + Ajax
dopelganger
post 4.01.2017, 15:10:05
Post #1





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


cześć
nie mogę poradzić sobie z powiązaniem S2 z Ajax. Jak zaczytać do kontrolera wartość ukrytego pola "pid" ?

twig:
  1. <input type="hidden" value="{{ entity.id }}" id="pid" name="pid" />
  2. <a href="#" id="plus">+</a>


js:
  1. $(document).ready(function() {
  2. $("#plus").on('click', function()
  3. {
  4. var data = $('#pid').val();
  5. alert(data); // wyświetla wartość pola pid ----------------------------------------------------
  6.  
  7. $.ajax({
  8. type: "POST",
  9. url: "{{ path('page') }}",
  10. data: data,
  11. success: function(response)
  12. {
  13. if (response == 'err') {
  14. alert('error');
  15. } else if (response == 'ok') {
  16. alert('ok');
  17. }
  18. }
  19. });
  20. return false;
  21. });
  22. });


kontroler:
  1. /**
  2. * @Route("/{page}", name="page")
  3. */
  4. public function pageAction()
  5. {
  6. $request = $this->getRequest();
  7. if ($request->isXmlHttpRequest()) {
  8. // ...
  9. }
  10. }


Prosze o pomoc.

Ten post edytował dopelganger 4.01.2017, 15:10:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
kapslokk
post 4.01.2017, 15:13:50
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


[JAVASCRIPT] pobierz, plaintext
  1. var data = {
  2. pid: $('#pid').val()
  3. };
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
nospor
post 4.01.2017, 15:13:53
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ajax to taki sam request jak kazdy inny. A kazdy wartosc w request skalda sie z jej nazwy i wartosci.

Tak wiec nie:
var data = $('#pid').val();
a:
var data = {pid: $('#pid').val()};

I normalnie odczytujesz ja w symfony jak kazda inna wartosc formularza.


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

"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
dopelganger
post 4.01.2017, 15:18:53
Post #4





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


Cytat(nospor @ 4.01.2017, 15:13:53 ) *
ajax to taki sam request jak kazdy inny. A kazdy wartosc w request skalda sie z jej nazwy i wartosci.

Tak wiec nie:
var data = $('#pid').val();
a:
var data = {pid: $('#pid').val()};

I normalnie odczytujesz ja w symfony jak kazda inna wartosc formularza.


klikam przycisk "+" i w jaki sposób sprawdzić że nastąpiło zdarzenie?

Go to the top of the page
+Quote Post
kapslokk
post 4.01.2017, 15:20:35
Post #5





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


W konsoli przegladarki powinienes widziec, ze zostal wyslany request. no i masz alert(data); ;]
Go to the top of the page
+Quote Post
nospor
post 4.01.2017, 15:20:48
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
klikam przycisk "+" i w jaki sposób sprawdzić że nastąpiło zdarzenie?

Ee... w konsoli przegladarki?


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

"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
Puszy
post 4.01.2017, 15:21:04
Post #7





Grupa: Zarejestrowani
Postów: 279
Pomógł: 42
Dołączył: 10.10.2011

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


Cytat(dopelganger @ 4.01.2017, 15:18:53 ) *
klikam przycisk "+" i w jaki sposób sprawdzić że nastąpiło zdarzenie?


Narzędzia developerskie w przeglądarce -> Network. Lub dorzuć console.log();
Go to the top of the page
+Quote Post
dopelganger
post 4.01.2017, 15:22:45
Post #8





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


nie o to mi chodzi, tylko o to jak w kontrolerze to odczytać ?
Go to the top of the page
+Quote Post
nospor
post 4.01.2017, 15:24:02
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Toz napisalem, tak samo jakbys wyslal forma....
$request->get('pid')


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

"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
dopelganger
post 4.01.2017, 15:51:36
Post #10





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


Cytat(nospor @ 4.01.2017, 15:24:02 ) *
Toz napisalem, tak samo jakbys wyslal forma....
$request->get('pid')


odczytuje z bazy wartość (+) $post->getPlus() i jest ok, ale nie zapisuje + zwiększonego o 1 dla:
  1. $em = $this->getDoctrine()->getManager();
  2. //..
  3. // update plus +
  4. if ( $request->get('pid') ) {
  5. $plus = $post->getPlus() + 1;
  6. $post->setPlus($plus);
  7. $em->flush();
  8. }


Nie wyrzuca żadnych błędów.

Ten post edytował dopelganger 4.01.2017, 15:55:16
Go to the top of the page
+Quote Post
nospor
post 4.01.2017, 16:35:21
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Sprawdz dokladnie w konsoli przegladarki co idzie ajaxe, czy oby na pewno poprawne dane.

Jesli tak, to zrob
var_dump($request->get('pid'));exit
i spojrz co to zwroci

No naprawde te podstawowe debugowanie co sie dzieje trzeba ci tlumaczyc?

ps: a te $post to skad ci sie bierze? Bo niby wynikalo ze $post pobierac powinienies na podstawie pid, ale w kodzie ten $post ci sie pojawia ni z gruchy ni z pietruchy i nie wynika bys bral go na podstawie pid


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

"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
Puszy
post 4.01.2017, 17:00:20
Post #12





Grupa: Zarejestrowani
Postów: 279
Pomógł: 42
Dołączył: 10.10.2011

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


Nie jest wymagany persist z EMa? Trochę się teraz zakręciłem bo ja używam zawsze persist i trochę zgłupiałem czy ja przypadkiem nie rozumiem źle zapisywania zmian w encjach.
Go to the top of the page
+Quote Post
nospor
post 4.01.2017, 17:05:24
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Puszy wszystko zalezy skad te $post sie wytrzasnelo. Jest stworzyl je tak:
$post = new Post();
I nic wiecej nie robil, to tak, persist() jest konieczny.

Jesli jednak $post pobral z $em poprzez find() to ono juz jest w $em sledzone i nie trzeba persist()

No ale jak juz pisalem w pierwszym poscie nie wiemy skad sie to $post wytrzasnelo wiec idzie tylko zgadywac


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

"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
dopelganger
post 5.01.2017, 08:14:24
Post #14





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


Cytat(nospor @ 4.01.2017, 17:05:24 ) *
@Puszy wszystko zalezy skad te $post sie wytrzasnelo. Jest stworzyl je tak:
$post = new Post();
I nic wiecej nie robil, to tak, persist() jest konieczny.

Jesli jednak $post pobral z $em poprzez find() to ono juz jest w $em sledzone i nie trzeba persist()

No ale jak juz pisalem w pierwszym poscie nie wiemy skad sie to $post wytrzasnelo wiec idzie tylko zgadywac


post jest ok i działa bo w ten sam sposób zapisuje też inną wartość, jest to po prostu pobrana z bazy findBySslug zawartość danej strony smile.gif
Niestety pid nie widać, jeszcze sprawdzam...



Cytat(nospor @ 4.01.2017, 16:35:21 ) *
Sprawdz dokladnie w konsoli przegladarki co idzie ajaxe, czy oby na pewno poprawne dane.

Jesli tak, to zrob
var_dump($request->get('pid'));exit
i spojrz co to zwroci

No naprawde te podstawowe debugowanie co sie dzieje trzeba ci tlumaczyc?

ps: a te $post to skad ci sie bierze? Bo niby wynikalo ze $post pobierac powinienies na podstawie pid, ale w kodzie ten $post ci sie pojawia ni z gruchy ni z pietruchy i nie wynika bys bral go na podstawie pid



NULL


Ten post edytował dopelganger 5.01.2017, 07:24:12
Go to the top of the page
+Quote Post
nospor
post 5.01.2017, 10:49:59
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No dobrze, NULL, ale sprawdziles (w konsoli przegladarki) co DOKLADNIE idzie twoim ajaxem?


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

"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
dopelganger
post 5.01.2017, 11:11:15
Post #16





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


Cytat(nospor @ 5.01.2017, 10:49:59 ) *
No dobrze, NULL, ale sprawdziles (w konsoli przegladarki) co DOKLADNIE idzie twoim ajaxem?



Failed to load resource: the server responded with a status of 503 (Service Unavailable)
POST example.com/test/stronka/%7B%7B%20path('page&#39%3b%29%20%7D%7D 500 (Internal Server Error)


Ten post edytował dopelganger 5.01.2017, 11:12:00
Go to the top of the page
+Quote Post
nospor
post 5.01.2017, 11:12:24
Post #17





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jak sam widzisz twoje {{ path(...) }} nie zostalo sparsowane...


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

"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
kapslokk
post 5.01.2017, 11:12:45
Post #18





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


biggrin.gif I nie zauwazyles, ze Ci sie url nie wygenerowal?
Go to the top of the page
+Quote Post
dopelganger
post 5.01.2017, 11:25:23
Post #19





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 27.10.2012

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


Cytat(nospor @ 5.01.2017, 11:12:24 ) *
Jak sam widzisz twoje {{ path(...) }} nie zostalo sparsowane...


dzięki za pomoc, zamykamy temat smile.gif

poprawiłem js:

  1. url: window.location.href,

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: 14.08.2025 - 01:09