Gibt es eine Möglichkeit, Daten mit der POST-Methode ohne Formular und ohne Aktualisierung der Seite nur mit reinem JavaScript (nicht mit jQuery $.post()
) zu senden ? Vielleicht httprequest
oder etwas anderes (kann es jetzt einfach nicht finden)?
138
Antworten:
Sie können es senden und die Daten in den Körper einfügen:
Übrigens, um eine Anfrage zu erhalten:
quelle
Die Fetch-API [neu zum Zeitpunkt des Schreibens im Jahr 2017] soll GET-Anforderungen vereinfachen, kann aber auch POST-fähig sein.
Wenn Sie so faul sind wie ich (oder einfach nur eine Verknüpfung / einen Helfer bevorzugen):
quelle
Sie können das
XMLHttpRequest
Objekt wie folgt verwenden:Dieser Code würde Post
someStuff
zuurl
. Stellen Sie einfach sicher, dass IhrXMLHttpRequest
Objekt beim Erstellen browserübergreifend kompatibel ist. Es gibt endlose Beispiele dafür.quelle
someStuff
?someStuff
kann alles sein, was Sie wollen, auch eine einfache Zeichenfolge. Sie können die Anfrage mit Online-Diensten wie meinem persönlichen Favoriten überprüfen: ( requestb.in )application/x-www-form-urlencoded
MIME-Typ hat keinencharset
Parameter: iana.org/assignments/media-types/application/…Mit RESTful können Sie auch Daten von einer POST- Anforderung zurückerhalten .
JS (in static / hello.html einfügen, um über Python zu dienen):
Python-Server (zum Testen):
Konsolenprotokoll (Chrom):
Konsolenprotokoll (Firefox):
Konsolenprotokoll (Edge):
Python-Protokoll:
quelle
Es gibt eine einfache Methode, um Ihre Daten zu verpacken und an den Server zu senden, als würden Sie ein HTML-Formular mit senden
POST
. Sie können dies mit demFormData
Objekt wie folgt tun :Jetzt können Sie die Daten auf der Serverseite genauso behandeln, wie Sie mit reugulären HTML-Formularen umgehen.
Zusätzliche Information
Es wird empfohlen, beim Senden von FormData keinen Content-Type-Header festzulegen, da sich der Browser darum kümmert.
quelle
FormData
erstellt eine mehrteilige Formularanforderung anstelle einerapplication/x-www-form-urlencoded
Anforderungnavigator.sendBeacon ()
Wenn Sie lediglich
POST
Daten benötigen und keine Antwort vom Server benötigen, ist die kürzeste Lösung die Verwendung vonnavigator.sendBeacon()
:quelle
navigator.sendBeacon
ist meiner Meinung nach nicht für diesen Zweck gedacht.Sie können XMLHttpRequest verwenden, API abrufen, ...
Wenn Sie XMLHttpRequest verwenden möchten, können Sie Folgendes tun
Oder wenn Sie die Abruf-API verwenden möchten
quelle
Wussten Sie, dass JavaScript über integrierte Methoden und Bibliotheken verfügt, mit denen Formulare erstellt und gesendet werden können?
Ich sehe hier viele Antworten, die alle darum bitten, eine Bibliothek von Drittanbietern zu verwenden, was ich für einen Overkill halte.
Ich würde folgendes in reinem Javascript tun:
Auf diese Weise (A) müssen Sie sich nicht auf Dritte verlassen, um die Arbeit zu erledigen. (B) Es ist alles in allen Browsern integriert, (C) schneller, (D) es funktioniert, Sie können es gerne ausprobieren.
Ich hoffe das hilft. H.
quelle