Ich habe ein Formular mit Namen orderproductForm
und einer undefinierten Anzahl von Eingaben.
Ich möchte eine Art jQuery.get oder Ajax oder ähnliches machen, das eine Seite über Ajax aufruft und alle Eingaben des Formulars mitsendet orderproductForm
.
Ich nehme an, ein Weg wäre, so etwas zu tun
jQuery.get("myurl",
{action : document.orderproductForm.action.value,
cartproductid : document.orderproductForm.cartproductid.value,
productid : document.orderproductForm.productid.value,
...
Allerdings kenne ich nicht alle Formulareingaben genau. Gibt es eine Funktion, die nur ALLE Formulareingaben sendet?
.ajaxSubmit()
/.ajaxForm()
sind keine Kernfunktionen von jQuery - Sie benötigen das jQuery Form PluginDies ist eine einfache Referenz:
Ich hoffe es hilft dir.
quelle
type: $(this).attr('method')
wenn Sie dasmethod
Attribut in Ihrem Formular verwenden.Eine andere ähnliche Lösung unter Verwendung der im Formularelement definierten Attribute:
quelle
get
die aktuelle URL verwendet. Könnte mit dem Hinzufügen dieser Annahme zum Code zu tun haben.Es gibt einige Dinge, die Sie beachten müssen.
1. Es gibt verschiedene Möglichkeiten, ein Formular einzureichen
Wir sollten uns daher an das Formularübermittlungsereignis binden , nicht an das Schaltflächenklickereignis. Dadurch wird sichergestellt, dass unser Code jetzt und in Zukunft auf allen Geräten und unterstützenden Technologien funktioniert.
2. Hijax
Der Benutzer hat möglicherweise kein JavaScript aktiviert. Hier ist ein Hijax- Muster gut, bei dem wir die Kontrolle über das Formular mithilfe von JavaScript übernehmen, es jedoch übermitteln können, wenn JavaScript fehlschlägt.
Wir sollten die URL und die Methode aus dem Formular ziehen. Wenn sich der HTML-Code ändert, müssen wir das JavaScript nicht aktualisieren.
3. Unauffälliges JavaScript
Die Verwendung von event.preventDefault () anstelle von false ist eine gute Vorgehensweise, da das Ereignis dadurch in die Luft sprudeln kann. Auf diese Weise können andere Skripts in das Ereignis eingebunden werden, z. B. Analyseskripts, die möglicherweise Benutzerinteraktionen überwachen.
Geschwindigkeit
Wir sollten idealerweise ein externes Skript verwenden, anstatt unser Skript inline einzufügen. Wir können im Kopfbereich der Seite mithilfe eines Skript-Tags darauf verlinken oder aus Gründen der Geschwindigkeit unten auf der Seite darauf verlinken. Das Skript sollte die Benutzererfahrung leise verbessern und nicht stören.
Code
Angenommen, Sie stimmen allen oben genannten Punkten zu und möchten das Submit-Ereignis abfangen und über AJAX (ein Hijax-Muster) verarbeiten. Dann könnten Sie Folgendes tun:
Sie können eine Formularübermittlung jederzeit manuell über JavaScript auslösen, indem Sie Folgendes verwenden:
Bearbeiten:
Ich musste dies kürzlich tun und schrieb schließlich ein Plugin.
Fügen Sie Ihrem Formular-Tag ein Attribut für die automatische Übermittlung von Daten hinzu, und Sie können Folgendes tun:
HTML
JS
quelle
Sie können auch FormData verwenden (im IE jedoch nicht verfügbar):
So verwenden Sie FormData .
quelle
Einfache Version (sendet keine Bilder)
Kopieren Sie die Ajaxifizierung eines Formulars oder aller Formulare auf einer Seite und fügen Sie sie ein
Es ist eine modifizierte Version von Alfrekjvs Antwort
JavaScript
Ich wollte die Antwort von Alfrekjv bearbeiten, bin aber zu stark davon abgewichen und habe beschlossen, diese als separate Antwort zu veröffentlichen.
Sendet keine Dateien, unterstützt keine Schaltflächen. Wenn Sie beispielsweise auf eine Schaltfläche (einschließlich einer Senden-Schaltfläche) klicken, wird deren Wert als Formulardaten gesendet. Da es sich jedoch um eine Ajax-Anforderung handelt, wird der Schaltflächenklick nicht gesendet.
Um Schaltflächen zu unterstützen, können Sie den tatsächlichen Schaltflächenklick anstelle der Übermittlung erfassen.
Auf der Serverseite können Sie eine Ajax-Anfrage mit diesem Header erkennen, den jquery
HTTP_X_REQUESTED_WITH
für PHP festlegtPHP
quelle
Dieser Code funktioniert auch bei der Dateieingabe
quelle
Array.from(new FormData(form))
iteriert über diesen formdata iterator :)Ich mochte diese Antwort von superluminary sehr und besonders die Art und Weise, wie er sie verpackte, ist eine Lösung in einem jQuery- Plugin. Vielen Dank an superluminary für eine sehr nützliche Antwort. In meinem Fall wollte ich jedoch ein Plugin, mit dem ich die Erfolgs- und Fehlerereignishandler mithilfe von Optionen definieren kann, wenn das Plugin initialisiert wird.
Also hier ist, was ich mir ausgedacht habe:
Mit diesem Plugin kann ich HTML-Formulare auf der Seite sehr einfach "ajaxifizieren" und Handler für Onsubmit- , Erfolgs- und Fehlerereignisse bereitstellen , um dem Benutzer Feedback zum Status des Formulars zu geben. Dadurch konnte das Plugin wie folgt verwendet werden:
Beachten Sie, dass die Ereignisbehandlungsroutinen für Erfolg und Fehler dieselben Argumente erhalten, die Sie von den entsprechenden Ereignissen der jQuery- Ajax- Methode erhalten würden.
quelle
Ich habe folgendes für mich:
wo
Dies setzt voraus, dass der Beitrag zu 'url' einen Ajax in Form von zurückgibt
{success: false, error:'my Error to display'}
Sie können dies nach Belieben variieren. Fühlen Sie sich frei, dieses Snippet zu verwenden.
quelle
target
hier? Warum sollten Sie ein Formular bei AJAX einreichen, um auf eine neue Seite weiterzuleiten?jQuery AJAX-Formular senden ist nichts anderes als das Senden eines Formulars mit der Formular-ID, wenn Sie auf eine Schaltfläche klicken
Bitte folgen Sie den Schritten
Schritt 1 - Das Formular-Tag muss ein ID-Feld haben
Schaltfläche, auf die Sie klicken werden
Schritt 2 - einreichen Ereignis in jQuery , die eine Form einreichen kann. in folgenden Code bereiten wir JSON - Anforderung von HTML - Elemente Namen .
Für eine Live-Demo klicken Sie auf den folgenden Link
Wie sende ich ein Formular mit jQuery AJAX?
quelle
erwägen, zu verwenden
closest
quelle
Ich weiß, dass dies eine
jQuery
verwandte Frage ist, aber heutzutage sind die Dinge mit JS ES6 viel einfacher. Da es keine reinejavascript
Antwort gibt, dachte ich, ich könnte eine einfache reinejavascript
Lösung hinzufügen , die meiner Meinung nach viel sauberer ist, indem ich diefetch()
API verwende. Dies ist eine moderne Methode zur Implementierung von Netzwerkanforderungen. In Ihrem Fall können wir, da Sie bereits ein Formularelement haben, es einfach verwenden, um unsere Anfrage zu erstellen.quelle
So vermeiden Sie das Senden mehrerer Formulardaten:
Vergessen Sie nicht, das Submit-Ereignis aufzuheben, bevor das Formular erneut gesendet wird. Der Benutzer kann die Sumbit-Funktion mehrmals aufrufen, hat möglicherweise etwas vergessen oder war ein Validierungsfehler.
quelle
Wenn Sie das Formular .serialize () verwenden, müssen Sie jedem Formularelement einen Namen wie diesen geben:
Und das Formular wird folgendermaßen serialisiert:
quelle
Sie können diese Funktion zum Senden wie unten verwenden.
HTML-Formular
jQuery-Funktion:
Weitere Details und Beispiele finden Sie unter: http://www.spiderscode.com/simple-ajax-contact-form/
quelle
Dies ist nicht die Antwort auf die Frage von OP.
Wenn Sie jedoch kein statisches Formular-DOM verwenden können, können Sie dies auch versuchen.
quelle
Versuchen
Code-Snippet anzeigen
quelle
Nur eine freundliche Erinnerung,
data
die auch ein Objekt sein kann:quelle
JavaScript
HTML
quelle
Es gibt auch das Submit-Ereignis, das wie folgt ausgelöst werden kann: $ ("# form_id"). Submit (). Sie würden diese Methode verwenden, wenn das Formular bereits in HTML gut dargestellt ist. Sie haben gerade die Seite gelesen, die Formulareingaben mit Material gefüllt und dann .submit () aufgerufen. Es wird die in der Deklaration des Formulars definierte Methode und Aktion verwenden, sodass Sie sie nicht in Ihr Javascript kopieren müssen.
Beispiele
quelle