92 votes

Comment puis-je soumettre un formulaire POST en utilisant le <a href="...">tag ?</a>

Comment puis-je soumettre un formulaire POST à showMessage.jsp utilisant uniquement la balise <a href="...">

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

117voto

rybo111 Points 1318

Aucun JavaScript nécessaire 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 styliser un bouton pour qu'il ressemble à 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;
}

43voto

naveed Points 308

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>

6voto

Si vous utilisez MVC pour l'accomplir, 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 parcourir quelques exemples ici et je n'ai pas vu celui de MVC, je me suis dit que cela ne ferait pas de mal de le publier.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X