Как я могу отправить форму POST, используя тег <a href="...">? - PullRequest
70 голосов
/ 17 ноября 2011

Как я могу отправить форму POST на showMessage.jsp, используя только тег <a href="...">?

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

Ответы [ 5 ]

77 голосов
/ 27 февраля 2014

JavaScript не требуется, если вместо этого используется кнопка:

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

Вы можете оформить кнопку в виде ссылки , например:

.btn-link {
    border: none;
    outline: none;
    background: none;
    cursor: pointer;
    color: #0000EE;
    padding: 0;
    text-decoration: underline;
    font-family: inherit;
    font-size: inherit;
}
38 голосов
/ 17 ноября 2011

Вы должны использовать функцию Javascript submit для вашего form объекта.Взгляните на другие функции .

<form action="showMessage.jsp" method="post">
    <a href="javascript:;" onclick="parentNode.submit();"><%=n%></a>
    <input type="hidden" name="mess" value=<%=n%>/>
</form>
32 голосов
/ 17 ноября 2011

Для этого вам нужно использовать javascript.

<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>
3 голосов
/ 22 июля 2014

Если вы используете MVC для этого - вам нужно будет сделать что-то вроде этого

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

Я только что просмотрел несколько примеров здесь и не увидел, что MVC полагал, что опубликовать его не повредит.

Тогда в вашем действии в контроллере я бы просто поместил <HTTPPost> поверх него. Я полагаю, что если у вас нет <HTTPGET> на вершине, оно все равно будет работать, но явно поместить его там будет немного безопаснее.

0 голосов
/ 29 апреля 2014

Кажется, нет никакого способа обмануть <a href= .. в методе POST. Однако, учитывая, что у вас есть доступ к CSS страницы, это можно заменить, используя вместо этого форму.

К сожалению, очевидный способ стилизации кнопки в CSS как тега привязки не совместим с разными браузерами, поскольку разные браузеры по-разному обрабатывают <button value= ....

Incorrect:

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

В приведенном выше примере будет показан параметр «Два» и передача «Один» в FireFox, в то время как в IE8 будет отображаться «Один» и передача также «Параметр: Один».

Обходной путь - использовать скрытые поля ввода для доставки данных и кнопку только для их отправки.

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

Обратите внимание, что у этого метода есть побочный эффект, который, кроме 'parameter: blaah', также доставит 'delete: Delete' в качестве избыточных параметров в POST.

Вы хотите оставить для кнопки атрибут значения и метку кнопки между тегами одинаковыми (в данном случае «Удалить»), поскольку (как указано выше) некоторые браузеры отображают один, а некоторые отображают другой как метку кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...