• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak zrobić, żeby po przesłaniu formularza nie ładował się w przeglądarce plik z action="plik"?

VPS Starter Arubacloud
0 głosów
552 wizyt
pytanie zadane 1 lipca 2018 w PHP przez GracjanDogg Użytkownik (840 p.)
<form action="/action_page.php" method="get">
  First name: <input type="text" name="fname"><br>
  Last name: <input type="text" name="lname"><br>
  <input type="submit" value="Submit">
</form>

Chcę, żeby zebrane dane się gdzieś zapisały, ale niech się wszystko nie otwiera na nowej karcie. Jak zrobić żeby wysłało i nic więcej nie robiło?

2 odpowiedzi

+1 głos
odpowiedź 2 lipca 2018 przez Tomek Sochacki Ekspert (227,490 p.)
wybrane 2 lipca 2018 przez GracjanDogg
 
Najlepsza

Przechwyć zdarzenie submit na formularzu i wyślij dane przy wykorzystaniu technologii Ajax, jednocześnie dodając event.preventDefault() aby zapobiec akcji domyślnej, czyli w tym wypadku wejścia w plik z action i przeładowania strony.

Jak zrobić żeby wysłało i nic więcej nie robiło?

Ja uważam, że mimo wszystko user powinien dostać informację czy się udało wszystko poprawnie wysłać/zapisać w bazie itp. W odpowiedzi z serwera możesz np. rzucić jakiegoś JSON'a ze statusem ok/error i choćby na tej podstawie dać info userowi.

Do prostych requestów Ajaxowych polecam np. axios, natywne fetch albo ewentualnie jQuery jeśli masz to i tak już w kodzie, bo dla samego ajax to nie warto podciągać całej biblioteki. Ale jeśli to byłby Twój pierwszy raz z Ajax to polecam spróbować samodzielnie obsłużyć obiekt XMLHttpRequest aby dokładnie zrozumieć co i jak się tam dzieje i nie myśleć o jQuery.ajax() jako o jakieś czarnej magii :)

komentarz 2 lipca 2018 przez GracjanDogg Użytkownik (840 p.)

Ja uważam, że mimo wszystko user powinien dostać informację czy się udało 

Niekoniecznie. Robię quiz, na początku pobieram dane ile ma lat, płać itd. chce to sobie gdzieś wysłać i w momencie wysłania bym ajaxem (jeszcze w nim nie robiłem, ale tę stronę planuje w nim zrobić) podmienił bym zawartość tego fragmentu strony na na pytania. A co do pierwszego to nie dałoby się formularza tak edytować żeby php wysłać i nie ładowały się żadne nowe strony?

komentarz 2 lipca 2018 przez Tomek Sochacki Ekspert (227,490 p.)
No właśnie, user coś podaje, to leci na sewrwer, tam mamy jakąś walidację i próbę zapisania np. w bazie. jeśli się uda to leci status OK i dane do quizu, jeśli nie to leci ERROR i user ma ładne info że coś poszło nie tak, a może pójść, może nie przejść walidacja, może być problem z bazą itp. itd. :)
komentarz 2 lipca 2018 przez GracjanDogg Użytkownik (840 p.)

Wszystko działa poza tym:

Przechwyć zdarzenie submit na formularzu i wyślij dane przy wykorzystaniu technologii Ajax

Nie wiem jak to przechwycić, próbowałem serialize() z marnym skutkiem.

komentarz 2 lipca 2018 przez Tomek Sochacki Ekspert (227,490 p.)

Chodziło mi po prostu o obsłużenie eventu submit np.:

<form id="contact-form" ..... >
...

// i teraz;
const form = document.getElementById('contact-form');
form.addEventListener('submit', (e) => {
    e.preventDefault(); //zapobiegamy akcji domyślnej
    // i tutaj np. strzelamy do serwera poprzez Ajax
} );

 

komentarz 3 lipca 2018 przez GracjanDogg Użytkownik (840 p.)
Sory, ale nie rozumiem, w jaki sposób mam strzelić ajaxem do serwera?
komentarz 3 lipca 2018 przez Tomek Sochacki Ekspert (227,490 p.)
Poczytaj w takim razie po prostu o technologii Ajax w JS to wszystko Ci się wyjaśni, było o tym wiele wątków na forum.

Podobne pytania

0 głosów
0 odpowiedzi 102 wizyt
pytanie zadane 30 maja 2023 w PHP przez Grzegorz Mikina Dyskutant (8,060 p.)
0 głosów
0 odpowiedzi 154 wizyt
pytanie zadane 12 listopada 2019 w PHP przez Cysiu Początkujący (270 p.)
+2 głosów
2 odpowiedzi 229 wizyt
pytanie zadane 16 października 2020 w PHP przez jajszczak Nowicjusz (170 p.)

93,020 zapytań

141,982 odpowiedzi

321,283 komentarzy

62,366 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...