Як я можу подати форму 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>
Як я можу подати форму 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>
Відповіді:
Якщо ви використовуєте замість кнопки, 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;
}
a
тег.
button
: IE змушує 3D-ефекти "натискання" на вас, коли ви використовуєте button
, чого легко уникнути використання a
. Якщо ви стилізуєте кнопку display: inline-table
, використання a
- це єдиний спосіб уникнути цього ефекту, оскільки звичайне обхідне рішення position: relative
не працює.
Ви повинні використовувати submit
функцію Javascript на своєму form
об’єкті. Погляньте на інші функції .
<form action="showMessage.jsp" method="post">
<a href="javascript:;" onclick="parentNode.submit();"><%=n%></a>
<input type="hidden" name="mess" value=<%=n%>/>
</form>
Якщо ви використовуєте 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>
на вершині, це все одно буде працювати, але явно помістити його там почувається трохи безпечніше.
Насправді не існує способу обдурити <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.
Ви хочете зберегти для кнопки атрибут значення та мітку кнопки між обома тегами однаковими (у цьому випадку - 'Видалити'), оскільки (як зазначено вище) деякі браузери відображатимуть один, а деякі відображатимуть інший як мітку кнопки.
<button value="Bad">Good</button>
в IE7, і на ньому відображається "Добре".