Próbuję wysłać dane z formularza do bazy danych. Oto formularz, którego używam:
<form name="foo" action="form.php" method="POST" id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
Typowym podejściem byłoby przesłanie formularza, ale powoduje to przekierowanie przeglądarki. Czy przy użyciu jQuery i Ajax można przechwycić wszystkie dane formularza i przesłać je do skryptu PHP (przykład, form.php )?
Odpowiedzi:
Podstawowe użycie
.ajax
wyglądałoby mniej więcej tak:HTML:
jQuery:
Uwaga: Ponieważ jQuery 1.8
.success()
,.error()
i.complete()
są przestarzałe na korzyść.done()
,.fail()
i.always()
.Uwaga: pamiętaj, że powyższy fragment
$(document).ready()
kodu należy wykonać po przygotowaniu modelu DOM, dlatego należy umieścić go w module obsługi (lub użyć$()
skrótu).Wskazówka: możesz połączyć programy obsługi oddzwaniania w następujący sposób:
$.ajax().done().fail().always();
PHP (czyli form.php):
Uwaga: Zawsze oczyszczaj opublikowane dane , aby zapobiec wstrzyknięciom i innym złośliwym kodom.
Możesz również użyć skrótu
.post
zamiast.ajax
w powyższym kodzie JavaScript:Uwaga: Powyższy kod JavaScript działa z jQuery 1.8 i nowszymi, ale powinien działać z poprzednimi wersjami, aż do jQuery 1.5.
źródło
request
został zadeklarowany jako lokalny var, któryif (request) request.abort();
nigdy nie działa.serialize()
zostaną pominięte.Aby złożyć żądanie Ajax za pomocą jQuery, możesz to zrobić za pomocą następującego kodu.
HTML:
JavaScript:
Metoda 1
Metoda 2
.success()
,.error()
I.complete()
wywołania zwrotne są przestarzałe jak z jQuery 1.8 . Aby przygotować swój kod do ich ostatecznego usunięcia, należy użyć.done()
,.fail()
i.always()
zamiast tego.MDN: abort()
. Jeśli żądanie zostało już wysłane, ta metoda przerwie żądanie.Dlatego pomyślnie wysłaliśmy żądanie Ajax, a teraz nadszedł czas, aby pobrać dane na serwer.
PHP
Jak złożyć zamówienie odpowiedzieć w wywołaniu Ajax (
type: "post"
), możemy teraz dane grab pomocą jednej$_REQUEST
lub$_POST
:Możesz także zobaczyć, co otrzymujesz w żądaniu POST, po prostu przez. BTW, upewnij się, że
$_POST
jest ustawiony. W przeciwnym razie pojawi się błąd.I wstawiasz wartość do bazy danych. Upewnij się, że uwrażliwiasz lub unikasz wszystkich żądań (niezależnie od tego, czy wykonałeś GET czy POST) przed wykonaniem zapytania. Najlepiej byłoby użyć przygotowanych wyciągów .
A jeśli chcesz zwrócić jakiekolwiek dane z powrotem na stronę, możesz to zrobić, po prostu odbierając te dane jak poniżej.
A potem możesz to uzyskać w następujący sposób:
Istnieje kilka metod skróconych . Możesz użyć poniższego kodu. Działa tak samo.
źródło
dataType
), aby potencjalnie mógł zaakceptować JSON lub inny format?Chciałbym podzielić się szczegółowym sposobem publikowania postów w PHP + Ajax wraz z błędami zwracanymi w przypadku niepowodzenia.
Przede wszystkim utwórz dwa pliki, na przykład
form.php
iprocess.php
.Najpierw utworzymy taki,
form
który zostanie następnie przesłany przy użyciujQuery
.ajax()
metody. Reszta zostanie wyjaśniona w komentarzach.form.php
Sprawdź poprawność formularza, sprawdzając poprawność po stronie klienta jQuery i przekaż dane do
process.php
.Teraz przyjrzymy się
process.php
Pliki projektu można pobrać ze strony http://projects.decodingweb.com/simple_ajax_form.zip .
źródło
Możesz użyć serializacji. Poniżej znajduje się przykład.
źródło
$.parseJSON()
jest całkowitym ratownikiem, dzięki. Miałem problem z interpretacją wyników na podstawie innych odpowiedzi.HTML :
JavaScript :
źródło
Korzystam ze sposobu pokazanego poniżej. Przekazuje wszystko jak pliki.
źródło
Jeśli chcesz wysłać dane za pomocą jQuery Ajax, nie ma potrzeby tagu formularza i przycisku przesyłania
Przykład:
źródło
źródło
Obsługa błędów i modułu ładującego Ajax przed przesłaniem i po przesłaniu pokazuje okno startowe z przykładem:
źródło
Używam tego prostego kodu jednoliniowego od lat bez problemu (wymaga jQuery):
Tutaj ap () oznacza stronę Ajax, a af () oznacza formularz Ajax. W formularzu po prostu wywołanie funkcji af () spowoduje wysłanie formularza do adresu URL i załadowanie odpowiedzi na żądany element HTML.
źródło
W swoim pliku php wpisz:
i w swoim pliku js wyślij ajax z obiektem danych
lub zachowaj tak, jak jest przy przesyłaniu formularza. Potrzebujesz tego tylko, jeśli chcesz wysłać zmodyfikowane żądanie z obliczoną dodatkową treścią, a nie tylko niektórymi danymi formularza, które wprowadza klient. Na przykład skrót, znacznik czasu, identyfikator użytkownika, identyfikator sesji i tym podobne.
źródło
Proszę to sprawdzić. Jest to kompletny kod żądania Ajax.
źródło
To bardzo dobry artykuł, który zawiera wszystko, co musisz wiedzieć o przesyłaniu formularza jQuery.
Podsumowanie artykułu:
Prosty formularz HTML Prześlij
HTML:
JavaScript:
HTML Multipart / form-data Form Submit
Aby przesłać pliki na serwer, możemy użyć interfejsu FormData dostępnego dla XMLHttpRequest2, który konstruuje obiekt FormData i może być łatwo wysłany na serwer za pomocą jQuery Ajax.
HTML:
JavaScript:
Mam nadzieję, że to pomoże.
źródło
Od czasu wprowadzenia Fetch API nie ma już żadnego powodu, aby robić to z jQuery Ajax lub XMLHttpRequests. Aby wysłać dane POST do skryptu PHP w waniliowym JavaScript, możesz wykonać następujące czynności:
Oto bardzo podstawowy przykład skryptu PHP, który pobiera dane i wysyła wiadomość e-mail:
źródło