web-dev-qa-db-fra.com

Comment envoyer un formulaire POST à l'aide de la balise <a href="...">?

Comment envoyer un formulaire POST à showMessage.jsp en utilisant simplement la balise <a href="...">?

<form action="showMessage.jsp" method="post">
    <a href="showMessage.jsp"><%=n%></a>
    <input type="hidden" name="mess" value=<%=n%>/>
</form>
70
hozaifa

Aucun JavaScript requis si vous utilisez un bouton à la place:

<form action="your_url" method="post">
    <button type="submit" name="your_name" value="your_value" class="btn-link">Go</button>
</form>

Vous pouvez attribuer à un bouton l'aspect d'un lien , par exemple:

.btn-link {
    border: none;
    outline: none;
    background: none;
    cursor: pointer;
    color: #0000EE;
    padding: 0;
    text-decoration: underline;
    font-family: inherit;
    font-size: inherit;
}
78
rybo111

Vous devez utiliser la fonction Javascript submit sur votre objet form. Jetez un coup d'oeil dans d'autres fonctions .

<form action="showMessage.jsp" method="post">
    <a href="javascript:;" onclick="parentNode.submit();"><%=n%></a>
    <input type="hidden" name="mess" value=<%=n%>/>
</form>
38
user898741

Vous devez utiliser javascript pour cela.

<form id="form1" action="showMessage.jsp" method="post">
    <a href="javascript:;" onclick="document.getElementById('form1').submit();"><%=n%></a>
    <input type="hidden" name="mess" value=<%=n%>/>
</form>
34
naveed

Si vous utilisez MVC pour y parvenir, vous devrez faire quelque chose comme ceci.

 <form action="/ControllerName/ActionName" method="post">
        <a href="javascript:;" onclick="parentNode.submit();"><%=n%></a>
        <input type="hidden" name="mess" value=<%=n%>/>
    </form>

Je viens de passer en revue quelques exemples ici et je n’ai pas vu celui de MVC pensait que cela ne ferait pas de mal de le poster.

Ensuite, sur votre action dans le contrôleur, je voudrais simplement mettre <HTTPPost> sur le dessus. Je crois que si vous n’avez pas <HTTPGET> au-dessus, cela fonctionnerait toujours, mais le mettre explicitement là-bas semble un peu plus sûr.

3
Alexey Shevelyov

Il semble vraiment impossible de tromper le <a href= .. dans une méthode POST. Cependant, étant donné que vous avez accès au CSS d'une page, vous pouvez le remplacer en utilisant plutôt un formulaire.

Malheureusement, la manière évidente de simplement styliser le bouton en CSS en tant que balise d'ancrage n'est pas compatible avec tous les navigateurs, car différents navigateurs traitent <button value= ... différemment.

Incorrect:

<form action='actbusy.php' method='post'>
  <button type='submit' name='parameter' value='One'>Two</button>
</form>

L'exemple ci-dessus montrera "Deux" et transmettra le paramètre "Un" dans FireFox, alors qu'il montrera "Un" et transmettra également le "paramètre: Un" dans IE8.

La solution consiste à utiliser un (des) champ (s) de saisie caché (s) pour la transmission des données et le bouton servant uniquement à la soumettre.

<form action='actbusy.php' method='post'>
   <input class=hidden name='parameter' value='blaah'>
   <button type='submit' name='delete' value='Delete'>Delete</button>
</form>

Notez que cette méthode a un effet secondaire qui outre le paramètre ': blaah', elle fournira également 'delete: Delete' en tant que paramètres excédentaires dans POST.

Vous voulez conserver pour un bouton l'attribut value et le libellé du bouton entre les balises identiques ('Supprimer' dans ce cas), car (comme indiqué ci-dessus), certains navigateurs en afficheront un et certains en afficheront un autre comme libellé de bouton.

0
Laid