Question

En HTML, vous pouvez envoyer des données d'une page à une autre à l'aide d'une demande GET de plusieurs manières:

http://www.example.com/somepage.php?data=1

... ou ...

<form action="somepage.php" method="get">
  <input type="hidden" name="data" value="1" />
  <input type="submit" value="Submit">
</form>

Avec une requête POST cependant, je n'ai vu que des données envoyées via des éléments de formulaire tels que:

<form action="somepage.php" method="post">
  <input type="hidden" name="data" value="1" />
  <input type="submit" value="Submit">
</form>

Si je ne souhaite envoyer qu'un seul paramètre à une autre page à l'aide de POST, existe-t-il un moyen plus simple que de l'envelopper dans un formulaire?

Était-ce utile?

La solution

Il n’existe que deux façons de publier à partir d’un navigateur: un formulaire ou un Ajax demande.

Autres conseils

En utilisant uniquement le langage HTML, un formulaire est le seul moyen de générer une demande POST. Vous pouvez utiliser les scripts côté serveur / Javascript pour générer des requêtes POST de différentes manières, mais vous ne pouvez pas utiliser d'autres méthodes que du HTML pur.

Comme vous l'avez déjà découvert, il existe exactement deux manières de transmettre des données via le protocole http: GET ou POST. Il existe également un troisième type de message HTTP appelé HEAD, mais il n’est utilisé que pour obtenir les métadonnées autour d’une ressource sans la télécharger et n’est pas largement implémenté.

Évidemment, <form> et foo.html?a=1&b=2 sont facilement accessibles grâce à l’utilisation d’une balise <=>. Le <=> est également facilement accessible en ajoutant manuellement des paramètres de requête à l’URL sous la forme de paires nom-valeur (<=>).

La beauté et la complexité de <=>, cependant, réside dans le fait que les paires nom-valeur sont communiquées du navigateur au serveur Web inclus dans l'en-tête de la requête HTTP, qui n'est pas aussi facilement accessible. Le seul moyen de réaliser <=> sans utiliser de balise <=> consiste à modifier manuellement l'en-tête de la requête HTTP et à ajouter les paires nom-valeur en vous-même.

N'oubliez pas non plus qu'un serveur HTTP ne sait pas intrinsèquement si une demande (<=> ou <=>) provient d'une fenêtre de navigateur principale ou d'un appel AJAX. Quoi qu’il en soit, le serveur Web lira la demande, déchiffrera s’il s’agit d’une demande <=> ou <=>, recherchera les paires nom-valeur selon le cas et générera une réponse.

Si vous souhaitez plus de détails sur la manière de formater correctement une demande <=>, vous pouvez aller à jmarshall.com/easy/http/ ou peut-être tcpipguide.com/free/t_HTTPRequestMod .htm . La ressource définitive est toujours le W3C , mais parfois les RFC peuvent être terriblement déroutant pour nous, simples mortels à lire.

En HTML uniquement, il s'agit d'un formulaire.

Mais vous pouvez le faire si vous jouez avec votre serveur. Voici un bon article qui vous montre comment manipuler le Comment le modifier en publication via PHP. Cela vous obligera à jouer avec fsockopen ... Cette façon de faire utilisera votre paramètre? Id = 1 & Amp; param = 2 ... et créera une requête POST côté serveur. Vous pouvez le rendre générique, une fois qu’il sera configuré, cela fonctionnera, mais c’est un peu fastidieux de tout configurer en premier.

Bien entendu, vous pouvez toujours effectuer une opération GET sur une page contenant une logique côté serveur (ou AJAX) permettant de créer une demande POST (par exemple, GET /pageWhichCreatesAPost.py). C'est très compliqué, bien sûr, mais il peut y avoir des cas où une telle solution de contournement pourrait être utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top