Chcę przesłać formularz za pomocą jQuery. Czy ktoś może podać kod, wersję demo lub przykładowy link?
Zależy to od tego, czy przesyłasz formularz normalnie, czy poprzez połączenie AJAX. Na stronie jquery.com można znaleźć wiele informacji , w tym dokumentację z przykładami. Aby normalnie przesłać formularz, sprawdź submit()
metodę na tej stronie. W przypadku AJAX istnieje wiele różnych możliwości, choć prawdopodobnie chcesz użyć metody ajax()
lub post()
. Zauważ, że post()
to naprawdę wygodny sposób na wywołanie ajax()
metody z uproszczonym i ograniczonym interfejsem.
Krytycznym zasobem, z którego korzystam na co dzień, że powinieneś zakładki jest jak działa jQuery . Zawiera tutoriale dotyczące korzystania z jQuery, a nawigacja po lewej stronie daje dostęp do całej dokumentacji.
Przykłady:
Normalna
$('form#myForm').submit();
AJAX
$('input#submitButton').click( function() {
$.post( 'some-url', $('form#myForm').serialize(), function(data) {
// ... do something with response from server
},
'json' // I expect a JSON response
);
});
$('input#submitButton').click( function() {
$.ajax({
url: 'some-url',
type: 'post',
dataType: 'json',
data: $('form#myForm').serialize(),
success: function(data) {
// ... do something with the data...
}
});
});
Zauważ, że powyższe metody ajax()
i post()
są równoważne. Istnieją dodatkowe parametry, które można dodać do ajax()
żądania w celu obsługi błędów itp.
$.post
wyraźnie dekonstruują i rekonstruują formularz w celu wygenerowania danych do przesłania. Dzięki!$('form#MyForm').serialize() + '&newData=' + newData + '&moreData=' + moreData
. Uwaga: te dwa ostatnie mogą wymagać zakodowania za pomocą adresu URLencodeURIComponent()
. LUB - możesz zmienić kodowanie JSON na obu końcach, ale wtedy musisz umieścić dane formularza w strukturze danych JavaScript z dodatkowymi danymi i serializować je. W takim przypadku prawdopodobnieserializeArray
Będziesz musiał użyć
$("#formId").submit()
.Zwykle wywołujesz to z poziomu funkcji.
Na przykład:
Możesz uzyskać więcej informacji na ten temat na stronie internetowej Jquery .
źródło
kiedy masz już istniejący formularz, powinien on teraz działać z jquery - ajax / post teraz możesz:
robić własne rzeczy
Należy pamiętać, że aby
serialize()
funkcja działała w powyższym przykładzie, wszystkie elementy formularza muszą miećname
zdefiniowany atrybut.Przykład formularza:
@PtF - dane są przesyłane przy użyciu POST w tej próbce, więc oznacza to, że możesz uzyskać dostęp do swoich danych za pośrednictwem
, gdzie dataproperty1 to „nazwa zmiennej” w twoim telefonie.
tutaj przykładowa składnia, jeśli używasz CodeIgniter:
źródło
W jQuery wolałbym:
Ale z drugiej strony naprawdę nie potrzebujesz jQuery do wykonania tego zadania - po prostu użyj zwykłego JavaScript:
źródło
Z instrukcji: jQuery Doc
źródło
Aby uzyskać informacje,
jeśli ktoś korzysta
Nie rób czegoś takiego
Minęło wiele godzin, aby znaleźć mnie, że subm () nie będzie tak działać.
źródło
"sumit"
sprawia, że nie jest jasne, czy literówka jest niezamierzona w odpowiedzi, czy była związana z problemem. Czy masz na myśli, że przycisk o nazwie"submit"
mesas up jquery form subm ()? Czy może chodziło Ci o to, że zamiast standardu podałeś nazwę przycisku Prześlijtype="submit"
?Użyj go, aby przesłać formularz za pomocą jquery. Oto link http://api.jquery.com/submit/
źródło
button
do przycisku, aby upewnić się, że formularz nie zostanie przesłany (ponieważ nie wszystkie przeglądarki traktują przyciski bez typów w ten sam sposób).to wyśle formularz z preloaderem:
Mam sztuczkę, aby dane formularza zostały zreformowane metodą losową http://www.jackart4.com/article.html
źródło
Zobacz wydarzenia / prześlij .
źródło
Pamiętaj, że jeśli już zainstalowałeś detektor zdarzeń wysyłania dla swojego formularza, wewnętrzne wywołanie metody submission ()
nie będzie działać, ponieważ będzie próbował zainstalować nowy detektor zdarzeń dla zdarzenia przesyłania tego formularza (co się nie powiedzie). Musisz więc uzyskać dostęp do samego elementu HTML (rozpakuj z jQquery) i bezpośrednio wywołać metodę subm () na tym elemencie:
źródło
Możesz także użyć wtyczki formularza jquery do przesłania za pomocą ajax, jak również:
http://malsup.com/jquery/form/
źródło
źródło
Zauważ, że w Internet Explorerze występują problemy z dynamicznie tworzonymi formularzami. Formularz utworzony w ten sposób nie będzie przesyłany w IE (9):
Aby działał w IE, utwórz element formularza i dołącz go przed przesłaniem:
Utworzenie formularza jak w przykładzie 1, a następnie dołączenie go nie zadziała - w IE9 zgłasza błąd JScript
DOM Exception: HIERARCHY_REQUEST_ERR (3)
Rekwizyty dla Tommy W @ https://stackoverflow.com/a/6694054/694325
źródło
Dotychczasowe rozwiązania wymagają znajomości identyfikatora formularza.
Użyj tego kodu, aby przesłać formularz bez konieczności posiadania identyfikatora:
Na przykład, jeśli chcesz obsłużyć zdarzenie kliknięcia przycisku, możesz użyć
źródło
Jeśli przycisk znajduje się między znacznikami formularza, wolę tę wersję:
źródło
możesz użyć tego w następujący sposób:
LUB
źródło
Sztuczka IE dla formularzy dynamicznych:
źródło
Moje podejście nieco inne Zmień przycisk w przycisk Prześlij, a następnie kliknij
źródło
Opublikuje dane formularza na podanej nazwie pliku przez AJAX.
źródło
Polecam ogólne rozwiązanie, więc nie musisz dodawać kodu dla każdej formy. Użyj wtyczki formularza jquery (http://jquery.malsup.com/form/) i dodaj ten kod.
źródło
możesz to zrobić w następujący sposób:
źródło
Użyłem również następujących elementów do przesłania formularza (bez faktycznego przesyłania go) za pośrednictwem Ajax:
źródło