Existe-t-il un moyen d'envoyer des données à l'aide de la méthode POST sans formulaire et sans actualiser la page en utilisant uniquement du JavaScript pur (pas jQuery $.post()
)? Peut httprequest
- être ou autre chose (je ne peux pas le trouver maintenant)?
141
Réponses:
Vous pouvez l'envoyer et insérer les données dans le corps:
Au fait, pour obtenir une demande:
la source
L' API Fetch [nouvelle au moment de la rédaction de cet article en 2017] est destinée à faciliter les requêtes GET, mais elle est également capable de POST.
Si vous êtes aussi paresseux que moi (ou préférez simplement un raccourci / aide):
la source
Vous pouvez utiliser l'
XMLHttpRequest
objet comme suit:Ce code publierait
someStuff
sururl
. Assurez-vous simplement que lorsque vous créez votreXMLHttpRequest
objet, il sera compatible avec tous les navigateurs. Il existe d'innombrables exemples sur la façon de procéder.la source
someStuff
?someStuff
peut être tout ce que vous voulez, même une simple chaîne. vous pouvez vérifier la demande en utilisant des services en ligne tels que mon favori personnel: ( requestb.in )application/x-www-form-urlencoded
type MIME n'a pas decharset
paramètre: iana.org/assignments/media-types/applicationDe plus, RESTful vous permet de récupérer des données à partir d'une requête POST .
JS (mis dans static / hello.html pour servir via Python):
Serveur Python (pour les tests):
Journal de la console (chrome):
Journal de la console (Firefox):
Journal de la console (Edge):
Journal Python:
la source
Il existe une méthode simple pour envelopper vos données et les envoyer au serveur comme si vous envoyiez un formulaire HTML en utilisant
POST
. vous pouvez le faire en utilisant unFormData
objet comme suit:maintenant, vous pouvez gérer les données côté serveur comme vous le faites avec les formulaires HTML réguliers.
Information additionnelle
Il est conseillé de ne pas définir l'en-tête Content-Type lors de l'envoi de FormData car le navigateur s'en chargera.
la source
FormData
créera une demande de formulaire en plusieurs parties plutôt qu'uneapplication/x-www-form-urlencoded
demandenavigator.sendBeacon ()
Si vous avez simplement besoin de
POST
données et que vous n'avez pas besoin d'une réponse du serveur, la solution la plus courte serait d'utilisernavigator.sendBeacon()
:la source
navigator.sendBeacon
n'est pas destiné à être utilisé à cette fin à mon avis.Vous pouvez utiliser XMLHttpRequest, fetch API, ...
Si vous souhaitez utiliser XMLHttpRequest, vous pouvez faire ce qui suit
Ou si vous souhaitez utiliser Fetch API
la source
Saviez-vous que JavaScript a ses méthodes et bibliothèques intégrées pour créer des formulaires et les soumettre?
Je vois beaucoup de réponses ici demandant toutes d'utiliser une bibliothèque tierce, ce qui, je pense, est exagéré.
Je ferais ce qui suit en Javascript pur:
De cette façon (A), vous n'avez pas besoin de compter sur des tiers pour faire le travail. (B) Tout est intégré à tous les navigateurs, (C) plus rapide, (D) cela fonctionne, n'hésitez pas à l'essayer.
J'espère que ça aide. H
la source