Як я можу надіслати форму POST, використовуючи тег <a href=COUNT ...................>?


Відповіді:


95

Якщо ви використовуєте замість кнопки, 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;
}

9
Оскільки ваш "метод" не використовує aтег.
Winfield Trail

4
Все добре і добре, але ви все одно вирішили відповісти на інше запитання, ніж було задано. А враховуючи те, що стираються чорнило насправді є життєздатним продуктом, виробленим у промислових масштабах ...
Winfield Trail

2
FWIW, я співчуваю вашій відповіді, і це те, що я особисто хотів би бачити у веб-програмах, які я повинен підтримувати. Я просто пояснюю голос проти, який, до речі, я не залишив. ;)
Вінфілд Трейл

@ rybo111 Причина, по якій ви можете не хотіти використовувати button: IE змушує 3D-ефекти "натискання" на вас, коли ви використовуєте button, чого легко уникнути використання a. Якщо ви стилізуєте кнопку display: inline-table, використання a- це єдиний спосіб уникнути цього ефекту, оскільки звичайне обхідне рішення position: relativeне працює.
Пая

Це привід, якого можна уникнути, щоб не використовувати кнопку для подання.
vintproykt

42

Для цього потрібно використовувати 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>

40

Ви повинні використовувати 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>

7
Елемент форми не обов'язково повинен бути завжди батьківським вузлом тегу прив'язки.
навіс

4

Якщо ви використовуєте 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>на вершині, це все одно буде працювати, але явно помістити його там почувається трохи безпечніше.


1

Насправді не існує способу обдурити <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.

Ви хочете зберегти для кнопки атрибут значення та мітку кнопки між обома тегами однаковими (у цьому випадку - 'Видалити'), оскільки (як зазначено вище) деякі браузери відображатимуть один, а деякі відображатимуть інший як мітку кнопки.


Ви впевнені, що IE8 це робить? Просто спробував <button value="Bad">Good</button>в IE7, і на ньому відображається "Добре".
rybo111
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.