Ich möchte ein Formular mit jQuery senden. Kann jemand den Code, eine Demo oder einen Beispiellink bereitstellen?
Dies hängt davon ab, ob Sie das Formular normal oder über einen AJAX-Anruf senden. Unter jquery.com finden Sie viele Informationen , einschließlich Dokumentation mit Beispielen. Wenn Sie ein Formular normal senden möchten, überprüfen Sie die submit()
Methode an dieser Site. Für AJAX gibt es viele verschiedene Möglichkeiten, obwohl Sie wahrscheinlich entweder die ajax()
oder post()
Methoden verwenden möchten . Beachten Sie, dass dies post()
nur eine bequeme Möglichkeit ist, die ajax()
Methode mit einer vereinfachten und eingeschränkten Schnittstelle aufzurufen .
Eine wichtige Ressource, die ich jeden Tag benutze und die Sie als Lesezeichen speichern sollten, ist die Funktionsweise von jQuery . Es enthält Tutorials zur Verwendung von jQuery und die Navigation auf der linken Seite bietet Zugriff auf die gesamte Dokumentation.
Beispiele:
Normal
$('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...
}
});
});
Beachten Sie, dass die ajax()
undpost()
obigen Methoden äquivalent sind. Es gibt zusätzliche Parameter, die Sie der ajax()
Anforderung hinzufügen können , um Fehler usw. zu behandeln.
$.post
expliziten Dekonstruieren und Rekonstruieren des Formulars , um zu sendende Daten zu generieren. Vielen Dank!$('form#MyForm').serialize() + '&newData=' + newData + '&moreData=' + moreData
. Hinweis: Die beiden letzteren müssen möglicherweise mit der URL codiert werdenencodeURIComponent()
. ODER - Sie können die JSON-Codierung an beiden Enden verwenden, müssen dann jedoch die Formulardaten mit Ihren zusätzlichen Daten in eine JavaScript-Datenstruktur einfügen und serialisieren. In diesem Fall würden Sie wahrscheinlichserializeArray
auf dem Formular verwenden und Ihre anderen Daten in.Sie müssen verwenden
$("#formId").submit()
.Sie würden dies im Allgemeinen innerhalb einer Funktion aufrufen.
Zum Beispiel:
Weitere Informationen hierzu finden Sie auf der Jquery-Website .
quelle
Wenn Sie ein vorhandenes Formular haben, sollte dies jetzt mit jquery - ajax / post funktionieren. Jetzt können Sie:
mach deine eigenen Sachen
Bitte beachten Sie, dass
serialize()
alle Formularelemente ihre haben müssen, damit die Funktion im obigen Beispiel funktioniertname
Attribut definiert sein .Beispiel des Formulars:
@PtF - Die Daten werden in diesem Beispiel mithilfe von POST übermittelt. Dies bedeutet, dass Sie über auf Ihre Daten zugreifen können
, wobei dataproperty1 ein "Variablenname" in Ihrem json ist.
Hier Beispielsyntax, wenn Sie CodeIgniter verwenden:
quelle
In jQuery würde ich Folgendes bevorzugen:
Andererseits benötigen Sie jQuery wirklich nicht, um diese Aufgabe auszuführen - verwenden Sie einfach reguläres JavaScript:
quelle
Aus dem Handbuch: jQuery Doc
quelle
Zur Information,
wenn jemand verwendet
Mach so etwas nicht
Es hat viele Stunden gedauert, bis ich herausgefunden habe, dass submit () so nicht funktioniert.
quelle
"sumit"
Tippfehler bei Schlüsselwörtern machen unklar, ob der Tippfehler in der Antwort unbeabsichtigt ist oder mit dem Problem zusammenhängt."submit"
Meinen Sie damit, dass eine Schaltfläche mit dem Namen jquery form submit () durcheinander bringt? Oder meinst du, das Problem war, dass du den Button- Namen anstelle des Standards übermittelt hasttype="submit"
?Verwenden Sie es, um Ihr Formular mit jquery zu senden. Hier ist der Link http://api.jquery.com/submit/
quelle
button
, Ihrer Schaltfläche einen Typ hinzuzufügen , um sicherzustellen, dass das Formular nicht gesendet wird (da nicht alle Browser Schaltflächen ohne Typ gleich behandeln).Dadurch wird ein Formular mit Preloader gesendet:
Ich habe einen Trick, um einen Formulardatenbeitrag mit der Zufallsmethode http://www.jackart4.com/article.html zu reformieren
quelle
Siehe Ereignisse / Senden .
quelle
Beachten Sie, dass, wenn Sie bereits einen Listener für Übermittlungsereignisse für Ihr Formular installiert haben, der innner Aufruf von submit ()
funktioniert nicht , da versucht wird, einen neuen Ereignis-Listener für das Übermittlungsereignis dieses Formulars zu installieren (was fehlschlägt). Sie müssen also auf das HTML-Element selbst zugreifen (aus jQquery auspacken) und submit () für dieses Element direkt aufrufen:
quelle
Sie können auch das jquery form plugin verwenden, um es mit ajax einzureichen:
http://malsup.com/jquery/form/
quelle
quelle
Beachten Sie, dass in Internet Explorer Probleme mit dynamisch erstellten Formularen auftreten. Ein so erstelltes Formular wird in IE (9) nicht gesendet:
Um es im IE zum Laufen zu bringen, erstellen Sie das Formularelement und hängen Sie es an, bevor Sie es wie folgt senden:
Das Erstellen des Formulars wie in Beispiel 1 und das anschließende Anhängen funktioniert nicht - in IE9 wird ein JScript-Fehler ausgegeben
DOM Exception: HIERARCHY_REQUEST_ERR (3)
Requisiten an Tommy W @ https://stackoverflow.com/a/6694054/694325
quelle
Für die bisherigen Lösungen müssen Sie die ID des Formulars kennen.
Verwenden Sie diesen Code, um das Formular zu senden, ohne die ID kennen zu müssen:
Wenn Sie beispielsweise das Klickereignis für eine Schaltfläche behandeln möchten, können Sie es verwenden
quelle
Wenn sich die Schaltfläche zwischen den Formular-Tags befindet, bevorzuge ich diese Version:
quelle
Sie könnten es so verwenden:
ODER
quelle
IE-Trick für dynamische Formulare:
quelle
Mein Ansatz etwas anders Ändern Sie die Schaltfläche in die Schaltfläche "Senden" und klicken Sie dann auf
quelle
Die Formulardaten werden über AJAX auf Ihrem angegebenen Dateinamen veröffentlicht.
quelle
Ich empfehle eine generische Lösung, damit Sie den Code nicht für jedes Formular hinzufügen müssen. Verwenden Sie das Plugin für das jquery-Formular (http://jquery.malsup.com/form/) und fügen Sie diesen Code hinzu.
quelle
Sie könnten es so machen:
quelle
Ich habe auch Folgendes verwendet, um ein Formular (ohne es tatsächlich einzureichen) über Ajax einzureichen:
quelle