Почему ‹button› выполняет GET в Firefox/Chrome, а POST в Opera?

Я разрабатываю веб-сайт (веб-форма ASP.NET на C#), где у меня есть элемент <button>.

Вот фрагмент кода:

<a href="ThisPage.aspx" ID="myButtonID" runat="server">
    <button>Configure new trip</button>
</a>

Когда я использую Firefox или Chrome, этот код выполняет «GET» над этим ThisPage.aspx. Это то, что я хочу сделать, на самом деле.

Вопрос в том, что тот же код выполняет «POST», когда я использую Opera. Кто-нибудь знает, что мне сделать, чтобы эта кнопка работала так же, как в Opera?


person XpiritO    schedule 19.10.2009    source источник
comment
Просто... нет, не делай этого. Кнопка — это не ссылка, а ссылка — это не кнопка.   -  person yfeldblum    schedule 19.10.2009


Ответы (4)


Вероятно, потому что FF/Chrome обрабатывает щелчок по тегу <a />, а Opera — по тегу <button />.

То, что вы ищете (я думаю), это отображение тега <a /> в виде кнопки? В этом случае взгляните на это, чтобы получить хорошее руководство о том, как стиль тега <a /> как кнопки

То, что вы делаете, в некоторой степени похоже на добавление текстового поля к тегу привязки, т.е. сематически неверно.

person veggerby    schedule 19.10.2009
comment
Я проверю это. Спасибо за ваш ответ. - person XpiritO; 19.10.2009
comment
Я решил это, используя элемент ‹a› вместо ‹button›. Спасибо, что помогли мне прояснить это. - person XpiritO; 19.10.2009

Я предполагаю, что это внутри тега формы?

Если это так, попробуйте установить метод формы на «получить».

person Daniel Robinson    schedule 19.10.2009
comment
В моей форме есть другие кнопки, которые должны выполнять POST. Нет ли способа заставить эту кнопку вместо этого сделать GET? - person XpiritO; 19.10.2009
comment
Вы не могли бы привести свою страницу в гигантскую форму. - person Breton; 19.10.2009
comment
Это приложение ASP.NET => страница представляет собой одну форму и автоматически POST - person veggerby; 19.10.2009
comment
тогда проблема в ASP.NET. Прекратите использовать это. - person Breton; 19.10.2009
comment
Конечно... Я работал в MVC, поэтому забыл, что вы не можете его изменить. - person Daniel Robinson; 19.10.2009

Если вы не выполняете никаких операций AJAX, и ожидается, что нажатие кнопки приведет к переходу к «ThisPage.aspx», тогда я бы рассмотрел возможность стилизации элемента <a>, как это было предложено @veggerby, и удаления элементов <button> </button>.

Однако это может сбить с толку пользователя, который может не ожидать, что кнопка в форме будет элементом навигации. Я бы предпочел, чтобы форма и ее элементы управления были визуально отделены от других элементов на странице - возможно, с помощью <fieldset>.

person belugabob    schedule 19.10.2009

Как Firefox/Chrome отправить «GET»? Есть какие-то параметры? Если вы хотите сделать ссылку на ThisPage.aspx, просто сделайте это без кнопки.

Форма может быть GET или POST, но не обоими одновременно. Поэтому, если кнопка находится внутри формы, она всегда будет отправлять данные из формы и должна использовать любой метод, установленный в форме.

Возможно, вы можете опубликовать фактический вывод HTML в браузере, а не код ASP? У меня такое чувство, что вы, возможно, создаете форму-в-форме. В этом случае решением было бы, если возможно, хранить формы отдельно.

person DisgruntledGoat    schedule 19.10.2009