Envoyer un POST par un lien

Envoyer un POST par un lien - HTML/CSS - Programmation

Marsh Posté le 16-05-2006 à 11:32:57    

Bonjour !
 
Je travaille avec des servlets.
J'aimerai qu'à certain moment, elles recoivent du HTTP-Post à la place d'un HTTP-Get, il faut donc que je génère des pages HTML ayant des liens (vers mes servlets), mais ces liens étant de "type Post". (MMmhhh pas trés clair peut être).
 
Quelle la manière de le faire SANS utiliser javascript (ou bien au pire AVEC javascript mais je péréferai sans).
Je précise que je ne veux pas un bouton (comme dans un form avec un <INPUT type="submit"...> ) mais un lien "classique" mais de type Post...
 
Merci !

Reply

Marsh Posté le 16-05-2006 à 11:32:57   

Reply

Marsh Posté le 16-05-2006 à 11:37:49    

<form name="monform" action="mapage.html" method="post">
  <input type="hidden"  name="nom" value="Valeur que je veux envoyer en post">
</form>
 
<a href="javascript:document.forms.monform.submit();">Cliquez ici</a>


Message édité par benjones le 16-05-2006 à 11:38:16
Reply

Marsh Posté le 16-05-2006 à 11:50:40    

Ok merci.
 
Ca utilise du Javascript, donc ca n'est pas idéal, mais apparemment, en faisant des recherches plus approfondies (mot clé "submit" plutôt que "post" ) ca n'est possible qu'avec du javascript...
 
Après, je ne comprends pas ton <input type="hidden"  name="nom" value="Valeur que je veux envoyer en post">
Je croyais que cet attribut contenait le nom du bouton input ?
 
<INPUT type="submit" value="Envoyer">

Message cité 1 fois
Message édité par ikao2 le 16-05-2006 à 11:51:01
Reply

Marsh Posté le 16-05-2006 à 11:51:23    

c'est pas propre comme solution... il ne faut pas utiliser javascript dans le href :o

Code :
  1. <form id="monForm" ...>
  2. ...
  3. </form>
  4. <a href="pageQuiAvertitQueSansJavascriptLeSiteMarchePas.html" onclick="document.getElementById('monForm').submit(); return false">Cliquez ici</a>


 
edit: par contre je vois pas pourquoi tu peux pas utiliser de submit, si c'est pour une question de look tu peux en faire a peu près ce que tu veux via css ou au pire utiliser un input image

Message cité 1 fois
Message édité par anapajari le 16-05-2006 à 11:53:01
Reply

Marsh Posté le 16-05-2006 à 11:56:26    

anapajari a écrit :

c'est pas propre comme solution... il ne faut pas utiliser javascript dans le href :o

Code :
  1. <form id="monForm" ...>
  2. ...
  3. </form>
  4. <a href="pageQuiAvertitQueSansJavascriptLeSiteMarchePas.html" onclick="document.getElementById('monForm').submit(); return false">Cliquez ici</a>


 
edit: par contre je vois pas pourquoi tu peux pas utiliser de submit, si c'est pour une question de look tu peux en faire a peu près ce que tu veux via css ou au pire utiliser un input image


 
 
D'abord, merci pour ta solution, et ensuite, oui, c'est une question de look, mais je ne savait pas qu'avec CSS je pouvais y faire quelque chose ?? Tu veux dire qu'en utilisant CSS je peux virer le bouton et le remplacer par un champ texte (et ca reste un lien) ?

Reply

Marsh Posté le 16-05-2006 à 11:57:08    

ikao2 a écrit :

Après, je ne comprends pas ton <input type="hidden"  name="nom" value="Valeur que je veux envoyer en post">
Je croyais que cet attribut contenait le nom du bouton input ?
 
<INPUT type="submit" value="Envoyer">


 
Cette balise input n'affiche pas un bouton, on n'affiche aucun bouton dans ce formulaire. Cette balise est de type "hidden" (caché) et n'apparait pas sur la page. elle porte le nom "nom" et tu met la valeur que tu veux dans le paramètre value.
 
ensuite dans ton lien tu "submit()" comme anapajari ta montré et dans l'autre page tu peut récupéré la valeur en post, elle aura le nom "nom" et le valeur que tu lui a donné. Par exemple, pour récupérer la valeur en php : $_POST['nom']

Reply

Marsh Posté le 16-05-2006 à 11:59:24    

Ce qui est aussi chelou, c'est le coup de liens en POST... Sachant que la méthode post ne devrait être utilisée que s'il y a des effets de bords :??:

Reply

Marsh Posté le 16-05-2006 à 12:03:39    

benjones a écrit :

Cette balise input n'affiche pas un bouton, on n'affiche aucun bouton dans ce formulaire. Cette balise est de type "hidden" (caché) et n'apparait pas sur la page. elle porte le nom "nom" et tu met la valeur que tu veux dans le paramètre value.
 
ensuite dans ton lien tu "submit()" comme anapajari ta montré et dans l'autre page tu peut récupéré la valeur en post, elle aura le nom "nom" et le valeur que tu lui a donné. Par exemple, pour récupérer la valeur en php : $_POST['nom']


 
Ok merci pour l'info. Donc je dois créer un champ <INPUT> par valeur que je voudrais passer ? (En fait, je passerai mes valeurs directement dans le <form action="chemin_de_ma_servlet/ma_servlet?var1&var2&var3> ou quelque chose du genre, mais ca m'intéresse quand même de savoir :) ).

Reply

Marsh Posté le 16-05-2006 à 12:06:14    

Oui ;)
 
<form name="monform" action="mapage.html" method="post">
  <input type="hidden"  name="variable1" value="Valeur">
  <input type="hidden"  name="variable2" value="Valeur">
  <input type="hidden"  name="variable3" value="Valeur">
  <input type="hidden"  name="variable4" value="Valeur">
  etc...
</form>

Reply

Marsh Posté le 16-05-2006 à 12:07:11    

FlorentG a écrit :

Ce qui est aussi chelou, c'est le coup de liens en POST... Sachant que la méthode post ne devrait être utilisée que s'il y a des effets de bords :??:


 
Et bien, à tort ou à raison, ma servlet est construite de telle manière que quand on l'accède directement (par un Get) elle ne fait que de l'affichage, mais quand on l'accède par un lien (que je veux donc mettre en post) elle fait du traitement (suivant le lien, et donc les valeurs spécifiées dans le post, le traitement sera différent).

Reply

Marsh Posté le 16-05-2006 à 12:07:11   

Reply

Marsh Posté le 16-05-2006 à 12:13:31    

les css ne te permettent pas de transformer le submit en lien mais de modifier son apparence afin de le faire ressembler au maximum à un lien ( il restera juste le problème du focus lors du clic)

Reply

Marsh Posté le 16-05-2006 à 12:18:26    

anapajari a écrit :

les css ne te permettent pas de transformer le submit en lien mais de modifier son apparence afin de le faire ressembler au maximum à un lien ( il restera juste le problème du focus lors du clic)


 
Par exemple si mon bouton s'appelle : bonjour
 
je pourrai séléctionner juste "bon" (séléctionner à la souris, comme si on voulait faire un copier/coller par exemple) ?
 
Et qu'appelles tu le "focus" ? C'est lorsque le lien change de couleur ou réagit au passage de la souris ?
Je suis désolé de toutes mes questions, je (re)débarque un peu dans le monde html avec de vieilles vieilles vieilles bases, et je n'ai pas vraiment le temps de tout réapprendre, vu que ce n'est qu'une petite partie du boulot que j'ai à faire...

Reply

Marsh Posté le 16-05-2006 à 14:45:46    

ikao2 a écrit :

Par exemple si mon bouton s'appelle : bonjour


??? Mais quel bouton ?
 

ikao2 a écrit :

Et qu'appelles tu le "focus" ?


Le focus correspond à l'élément sur leequel le curseur est positionné.
Mettre le focus sur un élément revient à se positionner dessus.
 

ikao2 a écrit :

C'est lorsque le lien change de couleur ou réagit au passage de la souris ?


Non, pour ça utilises onMouseOver
 
 

ikao2 a écrit :

Je suis désolé de toutes mes questions, je (re)débarque un peu dans le monde html avec de vieilles vieilles vieilles bases, et je n'ai pas vraiment le temps de tout réapprendre, vu que ce n'est qu'une petite partie du boulot que j'ai à faire...


Ya pas de mal, bon courage ;)

Message cité 1 fois
Message édité par benjones le 16-05-2006 à 14:46:13
Reply

Marsh Posté le 16-05-2006 à 14:49:47    

benjones a écrit :

??? Mais quel bouton ?


 
Le bouton du submit ;)

Reply

Marsh Posté le 16-05-2006 à 15:18:37    

FlorentG a écrit :

... des effets de bords :??:


 
désolé de polluer mais c est quoi ?  :D  

Reply

Marsh Posté le 16-05-2006 à 15:27:58    

Je dirai : effet indirect ou secondaire, pas forcement visible directement. Cela n'influe pas sur ton action principale, mais peut créer des problèmes ailleurs.
On parle aussi d'effet de bord quand l'evaluation contient une modification (du genre a=b++).
 
Difficile à expliquer tout ca :p

Reply

Marsh Posté le 16-05-2006 à 15:39:52    

Voilà, un effet de bord, dans ce cas-là, ça peut être par exemple une insertion dans une base de données.

Reply

Marsh Posté le 16-05-2006 à 16:25:22    

ikao2 a écrit :

Le bouton du submit ;)


 
Mais dans l'exemple que je t'ai montré, comme tu le souhaitais, il n'y a pas de bouton, rien q'un lien classique ;)

Reply

Marsh Posté le 16-05-2006 à 16:55:50    

Oui oui j'ai vu, mais dans le post de anapajari, il donne un code "plus propre" et me signale qu'avec des CSS, je pourrai a priori m'en sortir SANS javascript (ce que je demande dans mon premier post :) )
 
Sinon la méthode Javascript et c'est celle que j'utilisait... et d'après ce que dit anapajari, la seule solution quand on ne veut pas utiliser javascript, c'est d'utiliser les CSS pour camoufler son bouton "submit" en quelque chose d'approchant d'un lien HTML classique.
 
Or moi je ne sais pas comment faire ni trop à quoi cela va ressembler, d'où mes questions !
 
Donc si vous avez des exemples, n'hésitez pas à me donner les liens ! Merci !

Reply

Marsh Posté le 17-05-2006 à 08:55:11    

up up !  :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed