Mam formularz z nazwą orderproductForm
i nieokreśloną liczbą danych wejściowych.
Chcę zrobić jakiś plik jQuery.get lub ajax lub cokolwiek podobnego, który wywołałby stronę przez Ajax i wysłałby wszystkie dane wejściowe formularza orderproductForm
.
Myślę, że jednym ze sposobów byłoby zrobienie czegoś takiego
jQuery.get("myurl",
{action : document.orderproductForm.action.value,
cartproductid : document.orderproductForm.cartproductid.value,
productid : document.orderproductForm.productid.value,
...
Jednak nie znam dokładnie wszystkich danych wejściowych formularza. Czy istnieje funkcja, funkcja lub coś, co po prostu wyśle WSZYSTKIE dane wejściowe formularza?
.ajaxSubmit()
/.ajaxForm()
nie są podstawowymi funkcjami jQuery - potrzebujesz wtyczki jQuery FormTo jest proste odniesienie:
Mam nadzieję, że Ci to pomoże.
źródło
type: $(this).attr('method')
jeśli użyjeszmethod
atrybutu w formularzu.Inne podobne rozwiązanie wykorzystujące atrybuty zdefiniowane w elemencie formularza:
źródło
get
ustawione odpowiednio na bieżący adres URL. Mógłby to zrobić poprzez dodanie tego założenia do kodu.Jest kilka rzeczy, o których należy pamiętać.
1. Istnieje kilka sposobów przesłania formularza
Powinniśmy zatem powiązać zdarzenie przesłania formularza , a nie zdarzenie kliknięcia przycisku. Dzięki temu nasz kod będzie działał na wszystkich urządzeniach i technologiach pomocniczych teraz iw przyszłości.
2. Hijax
Użytkownik może nie mieć włączonej obsługi JavaScript. Hijax wzór jest dobry tutaj, gdzie delikatnie przejąć kontrolę nad formularza przy użyciu JavaScript, ale pozostawić submittable jeśli JavaScript nie powiedzie się.
Powinniśmy pobrać adres URL i metodę z formularza, więc jeśli zmieni się HTML, nie musimy aktualizować JavaScript.
3. Dyskretny JavaScript
Używanie event.preventDefault () zamiast zwracać false jest dobrą praktyką, ponieważ pozwala na bąbelkowanie zdarzenia. Pozwala to innym skryptom powiązać się ze zdarzeniem, na przykład skryptom analitycznym, które mogą monitorować interakcje użytkownika.
Prędkość
Idealnie powinniśmy użyć zewnętrznego skryptu, zamiast wstawiać skrypt bezpośrednio. Możemy połączyć się z tym linkiem w sekcji nagłówka strony, używając tagu skryptu, lub link do niego u dołu strony, aby przyspieszyć. Skrypt powinien po cichu poprawić wrażenia użytkownika, a nie przeszkadzać.
Kod
Zakładając, że zgadzasz się z powyższym i chcesz złapać zdarzenie przesyłania i obsłużyć je za pomocą AJAX (wzór hijax), możesz zrobić coś takiego:
Możesz ręcznie uruchomić wysyłanie formularza w dowolnym momencie za pomocą JavaScript, używając czegoś takiego:
Edytować:
Niedawno musiałem to zrobić i ostatecznie napisałem wtyczkę.
Dodaj atrybut data-autosubmit do tagu formularza, a następnie możesz to zrobić:
HTML
JS
źródło
Możesz także użyć FormData (ale niedostępne w IE):
W ten sposób korzystasz z FormData .
źródło
Prosta wersja (nie wysyła zdjęć)
Skopiuj i wklej aukcjonowanie formularza lub wszystkich formularzy na stronie
Jest to zmodyfikowana wersja Alfrekjv za odpowiedź
JavaScript
Chciałem zredagować odpowiedź Alfrekjva, ale za bardzo się od niej odstąpiłem, dlatego postanowiłem opublikować ją jako osobną odpowiedź.
Nie wysyła plików, nie obsługuje przycisków, na przykład kliknięcie przycisku (w tym przycisku przesłania) wysyła swoją wartość jako dane formularza, ale ponieważ jest to żądanie ajax, kliknięcie przycisku nie zostanie wysłane.
Aby obsługiwać przyciski, możesz uchwycić rzeczywiste kliknięcie przycisku zamiast przesyłania.
Po stronie serwera można wykryć żądanie ajax z tym nagłówkiem, który ustawia jquery
HTTP_X_REQUESTED_WITH
dla phpPHP
źródło
Ten kod działa nawet przy wprowadzaniu plików
źródło
Array.from(new FormData(form))
iteruje ten iterator formdata :)Bardzo lubiłem tę odpowiedź za superluminary a zwłaszcza sposób owinął jest rozwiązanie w jQuery plugin. Dzięki superluminarium za bardzo przydatną odpowiedź. W moim przypadku chciałem jednak wtyczki, która pozwoliłaby mi zdefiniować moduły obsługi zdarzeń powodzenia i błędów za pomocą opcji po zainicjowaniu wtyczki.
Oto co wymyśliłem:
Wtyczka ta pozwala mi bardzo łatwo „ajaxify” formularze html na stronie i dostarczać onSubmit , sukcesów i błędów obsługi zdarzeń dla wdrażania zwrotnych użytkownikowi statusu formie przedstawienia. Dzięki temu wtyczka mogła być używana w następujący sposób:
Zwróć uwagę, że procedury obsługi zdarzeń powodzenia i błędu otrzymują te same argumenty, które otrzymasz od odpowiednich zdarzeń metody ajaxowej jQuery .
źródło
Mam dla siebie następujące rzeczy:
gdzie
Zakłada się, że post do „url” zwraca ajax w postaci
{success: false, error:'my Error to display'}
Możesz to dowolnie zmieniać. Skorzystaj z tego fragmentu.
źródło
target
tu jest? Dlaczego miałbyś przesyłać formularz w AJAX, aby przekierować na nową stronę?jQuery AJAX przesłać formularz , to nic innego jak przesłać formularz przy użyciu identyfikatora formularza po kliknięciu przycisku
Postępuj zgodnie z instrukcjami
Krok 1 - Tag formularza musi mieć pole identyfikatora
Przycisk, który chcesz kliknąć
Krok 2 - przesłać zdarzenie w jQuery, co pomaga w przesłaniu formularza. w poniższym kodzie przygotowujemy żądanie JSON z nazwy elementu HTML .
w celu pokazu na żywo kliknij poniższy link
Jak przesłać formularz za pomocą jQuery AJAX?
źródło
rozważ użycie
closest
źródło
Wiem, że jest to
jQuery
powiązane pytanie, ale teraz dni z JS ES6 są znacznie łatwiejsze. Ponieważ nie ma czystejjavascript
odpowiedzi, pomyślałem, że mogę dodać do tego proste, czystejavascript
rozwiązanie, które moim zdaniem jest znacznie czystsze, używającfetch()
API. To nowoczesny sposób realizacji żądań sieciowych. W twoim przypadku, ponieważ masz już element formularza, możemy go po prostu użyć do zbudowania naszego żądania.źródło
Aby uniknąć wysyłania wielu danych formdata:
Nie zapomnij cofnąć wiązania zdarzenia przesłania, zanim formularz zostanie przesłany ponownie, użytkownik może wywołać funkcję sumbit więcej niż jeden raz, być może coś zapomniał lub był to błąd sprawdzania poprawności.
źródło
Jeśli używasz formularza .serialize () - musisz nadać każdemu elementowi formularza taką nazwę:
I formularz jest serializowany w następujący sposób:
źródło
Możesz użyć tego w funkcji przesyłania, jak poniżej.
Formularz HTML
Funkcja jQuery:
Więcej informacji i przykładowa wizyta: http://www.spiderscode.com/simple-ajax-contact-form/
źródło
To nie jest odpowiedź na pytanie OP,
ale jeśli nie możesz użyć statycznej postaci DOM, możesz również spróbować w ten sposób.
źródło
Próbować
Pokaż fragment kodu
źródło
Tylko przyjazne przypomnienie, które
data
może być także przedmiotem:źródło
JavaScript
HTML
źródło
Istnieje również zdarzenie Prześlij, które można wywołać w ten sposób $ („# form_id”). Submit (). Użyłbyś tej metody, jeśli formularz jest już dobrze reprezentowany w HTML. Właśnie przeczytałeś na stronie, wypełniłeś formularze odpowiednimi danymi, a następnie wywołałeś .submit (). Użyje metody i akcji zdefiniowanych w deklaracji formularza, więc nie musisz kopiować go do swojego javascript.
przykłady
źródło