Aby wysłać formularz bez przeładowania strony, możesz użyć technologii AJAX (Asynchronous JavaScript and XML). Pozwala ona na asynchroniczne wysyłanie danych na serwer i odbieranie odpowiedzi bez konieczności przeładowania całej strony. Możesz użyć czystego JavaScriptu lub biblioteki jQuery, aby to zrealizować.
1. AJAX z czystym JavaScriptem
Oto przykład z wykorzystaniem XMLHttpRequest
:
HTML:
<form id="myForm"> <input type="text" name="name" placeholder="Your Name" required> <input type="email" name="email" placeholder="Your Email" required> <button type="submit">Submit</button> </form> <div id="result"></div>
JavaScript:
document.getElementById('myForm').addEventListener('submit', function(event) { event.preventDefault(); // Zatrzymanie domyślnego zachowania (przeładowania strony) var form = document.getElementById('myForm'); var formData = new FormData(form); var xhr = new XMLHttpRequest(); xhr.open('POST', 'server.php', true); // Zamień 'server.php' na adres swojego endpointu xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { document.getElementById('result').innerHTML = xhr.responseText; } }; xhr.send(formData); });
W tym przykładzie dane formularza są wysyłane na serwer asynchronicznie, a odpowiedź jest wyświetlana w elemencie o ID result
bez przeładowania strony.
2. AJAX z wykorzystaniem jQuery
Jeśli korzystasz z biblioteki jQuery, proces jest jeszcze prostszy:
HTML:
<form id="myForm"> <input type="text" name="name" placeholder="Your Name" required> <input type="email" name="email" placeholder="Your Email" required> <button type="submit">Submit</button> </form> <div id="result"></div>
jQuery:
$('#myForm').on('submit', function(event) { event.preventDefault(); // Zatrzymanie przeładowania strony $.ajax({ url: 'server.php', // Zamień na swój endpoint type: 'POST', data: $(this).serialize(), // Konwertuje dane formularza do formatu URL-encoded success: function(response) { $('#result').html(response); } }); });
Jak to działa:
event.preventDefault()
zatrzymuje domyślne działanie formularza (czyli przeładowanie strony).FormData(form)
(w przypadku czystego JavaScriptu) lub$(this).serialize()
(w jQuery) pobiera dane formularza.- Wysłanie żądania do serwera odbywa się asynchronicznie, a odpowiedź serwera jest wyświetlana w wyznaczonym elemencie (
#result
).
Obydwa sposoby zapewniają bezproblemowe przesyłanie formularza bez przeładowania strony.