Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Formularz bez przeladowania strony. Problem z przekazaniem zmiennych.
fcppl
post 10.01.2023, 12:52:35
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


witam,

Chciałem zrobić prosty formularz bez przeładowania strony za pomocą serialize i wszystko działa OK, ale po wywołaniu skryptu nie przekazuje zmiennej Submit POST -> $_POST['unpublished'] i $_POST['published']

Jeżeli formularz ładuję bezpośrednio z products_success.php te zmienne istnieją i warunki mogą być spełnione.

Problem mam taki jak zrobić żeby te zmienne POST po wywołaniu serialize też istniały?

  1. $(document).ready(function(){
  2. $("#form_add_products").on("submit", function(event){
  3. event.preventDefault();
  4. $.post("products_success.php", $(this).serialize(), function(data){
  5.  
  6. });
  7. });
  8. });
  9.  
  10.  
  11. <form id="form_add_products" method="post" enctype="multipart/form-data">
  12.  
  13. ....
  14.  
  15. <input type="submit" name="published" value="Opublikuj" class="dropdown-item">
  16. <input type="submit" name="unpublished" value="Wycofaj" class="dropdown-item">
  17.  
  18. </form>


  1. echo = $_POST['published'];
  2. echo = $_POST['unpublished'];
  3.  
  4.  
  5. if (isset($_POST['published'])) {
  6.  
  7. echo 'publikuje';
  8.  
  9. }
  10.  
  11. if (isset($_POST['unpublished'])) {
  12.  
  13. echo 'wylaczony';
  14.  
  15. }


Ten post edytował fcppl 10.01.2023, 12:53:14
Go to the top of the page
+Quote Post
nospor
post 10.01.2023, 14:13:15
Post #2





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




serialize omija buttony.Musisz niestety sam recznie dodac ten button, ktory byl kliniety


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

"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
trueblue
post 10.01.2023, 14:16:53
Post #3





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


A "wycofaj" powoduje zapis danych?


--------------------
Go to the top of the page
+Quote Post
fcppl
post 10.01.2023, 14:17:57
Post #4





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


dzięki za informację. Mogę prosić o jakis przykład jak dodac samemu button ?

Cytat(trueblue @ 10.01.2023, 14:16:53 ) *
A "wycofaj" powoduje zapis danych?


Nie nic się nie dzieje
Go to the top of the page
+Quote Post
trueblue
post 10.01.2023, 14:21:40
Post #5





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


To po co analizować, który przycisk został naciśnięty w PHP.
Przycisk powinien być albo <input type="reset"> albo buttonem z przekierowaniem do innej strony/przeładowaniem (JS).


--------------------
Go to the top of the page
+Quote Post
fcppl
post 10.01.2023, 14:33:04
Post #6





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


Cytat(trueblue @ 10.01.2023, 14:21:40 ) *
To po co analizować, który przycisk został naciśnięty w PHP.
Przycisk powinien być albo <input type="reset"> albo buttonem z przekierowaniem do innej strony/przeładowaniem (JS).


W moim przypadku mam kilka przyciskow dla przykładu tutaj podałem dwa i wszystko działa OK tylko niestety tak jak sie teraz dowiedziałem serialize nie przenosi ich danych.
Go to the top of the page
+Quote Post
nospor
post 10.01.2023, 14:35:32
Post #7





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




Cytat
Mogę prosić o jakis przykład jak dodac samemu button ?

No normalnie do tablicy ktora zwraca serialize dodajesz kolekjny element

var formData = $(this).serialize();
formData.push({ name: "twoj button", value: "twoja wartosc" });


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

"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
fcppl
post 10.01.2023, 15:18:17
Post #8





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


Cytat(nospor @ 10.01.2023, 14:35:32 ) *
No normalnie do tablicy ktora zwraca serialize dodajesz kolekjny element

var formData = $(this).serialize();
formData.push({ name: "twoj button", value: "twoja wartosc" });


wykombinowałem coś takiego ale niestety nie działą, pewnie coś robię zle ale niestety nie wiec jak to ogarnać. Wykonywałem tez rożne inne testy ale wklejam tylko jeden.

  1. $(document).ready(function(){
  2. $("#form_add_products").on("submit", function(event){
  3. event.preventDefault();
  4.  
  5. var formData = $(this).serialize();
  6.  
  7. formData.push({name:"published", value:"Opublikuj"});
  8.  
  9. $.post("products_success.php",
  10.  
  11. formData,
  12.  
  13. function(data){
  14.  
  15. });
  16. });
  17. });
Go to the top of the page
+Quote Post
nospor
post 10.01.2023, 15:21:11
Post #9





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




I czym sie objawia "nie dzialanie" ?


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

"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
fcppl
post 10.01.2023, 15:23:53
Post #10





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


Cytat(nospor @ 10.01.2023, 15:21:11 ) *
I czym sie objawia "nie dzialanie" ?


nic się nie dzieje a z konsoli mam bład

  1. products.php?pageno=1:424 Uncaught TypeError: formData.push is not a function
  2. at HTMLFormElement.<anonymous> (products.php?pageno=1:424:15)
  3. at HTMLFormElement.dispatch (jquery-3.5.1.min.js:2:43090)
  4. at v.handle (jquery-3.5.1.min.js:2:41074)
Go to the top of the page
+Quote Post
nospor
post 10.01.2023, 15:48:08
Post #11





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




no to pisz od razu a "nei nie dziala" tongue.gif

co zwraca

console.log(formData);
?

sorki, w moim przykladzie powinno byc
serializeArray()


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

"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
fcppl
post 10.01.2023, 16:17:40
Post #12





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


Cytat(nospor @ 10.01.2023, 15:48:08 ) *
no to pisz od razu a "nei nie dziala" tongue.gif

co zwraca

console.log(formData);
?

sorki, w moim przykladzie powinno byc
serializeArray()


Teraz wszystko działa OK, ale mam ostatni problem. Wiem ze to są pytania amatorskie:

Teraz jak kliknę Opublikuj lub Wycofaj zawsze razem mi wywołuje do Post te dwie zmienne. Jak zrobić zeby odpowiednio osobno wywołało jak klikne Opublikuj i osobno Wycofaj?

  1. $(document).ready(function(){
  2. $("#form_add_products").on("submit", function(event){
  3. event.preventDefault();
  4.  
  5. var formData = $(this).serializeArray();
  6.  
  7. formData.push({name:"published", value:"Opublikuj"});
  8. formData.push({name:"unpublished", value:"Wycofaj"});
  9.  
  10. $.post("products_success.php",
  11.  
  12. formData,
  13.  
  14. function(data){
  15.  
  16. });
  17. });
  18. });
Go to the top of the page
+Quote Post
nospor
post 10.01.2023, 16:18:39
Post #13





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




No submit masz dodawac ten ktory sie kliknal a nie na chama pchasz dwa.
Jaki zostal klikniety submit to chyba masz w event a konkretnie w event.target. Sprawdz


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

"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
fcppl
post 10.01.2023, 16:37:20
Post #14





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


Cytat(nospor @ 10.01.2023, 16:18:39 ) *
No submit masz dodawac ten ktory sie kliknal a nie na chama pchasz dwa.
Jaki zostal klikniety submit to chyba masz w event a konkretnie w event.target. Sprawdz


Możesz mi podac jakis przykład bo niestety nie wiem jak sie za to zabrać?

Go to the top of the page
+Quote Post
nospor
post 10.01.2023, 16:42:24
Post #15





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




console.log(event.target);

co ci zwraca?


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

"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
fcppl
post 10.01.2023, 17:16:43
Post #16





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


Cytat(nospor @ 10.01.2023, 16:42:24 ) *
console.log(event.target);

co ci zwraca?


Podaj link bo jest tego sporo i nie chce wklejac:

https://fcp.vot.pl/k.txt
Go to the top of the page
+Quote Post
nospor
post 10.01.2023, 17:20:54
Post #17





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




hm, to chyba w przypadku ajax musisz podpiac zdarzenia click pod te buttony, zamiast zdarzenie pod wyslanie forma.
Wtedy bedziesz wiedzial jednoznacznie ktory submit kliknieto i tylko jego dodasz



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

"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
fcppl
post 10.01.2023, 17:38:50
Post #18





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


Cytat(nospor @ 10.01.2023, 17:20:54 ) *
hm, to chyba w przypadku ajax musisz podpiac zdarzenia click pod te buttony, zamiast zdarzenie pod wyslanie forma.
Wtedy bedziesz wiedzial jednoznacznie ktory submit kliknieto i tylko jego dodasz


tylko jak to zrobic? i znow musze prosic o jakis przyklad.
Go to the top of the page
+Quote Post
nospor
post 10.01.2023, 17:46:26
Post #19





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




No zamiast
$("#form_add_products").on("submit"

masz zrobic


$("TWOJ INPUT").on("click"


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

"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
fcppl
post 10.01.2023, 18:22:39
Post #20





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 11.04.2010

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


Cytat(nospor @ 10.01.2023, 17:46:26 ) *
No zamiast
$("#form_add_products").on("submit"

masz zrobic


$("TWOJ INPUT").on("click"


jak zmieniłem tak jak pisales to wtedy formularz nie przekazuje jako Post pol type=hidden smile.gif
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Wersja Lo-Fi Aktualny czas: 27.04.2024 - 23:11