URL-адрес на стороне клиента Кодирование параметров запроса в гиперссылке

Как можно закодировать параметры запроса URL-адреса, который отображается в виде гиперссылки.

Пример такой гиперссылки:

<a href="http://site/page.html?param1=value1&param2=value2">MyPage</a>

Я хочу, чтобы для этого использовались только возможности html.

Я могу частично выполнить это с помощью html-формы, используя метод http get, но тогда я не вижу гиперссылку и вместо этого должен использовать кнопку отправки (которую я не хочу использовать):

<form method="get" action="http://site/page.html"> MyPage
 <input type="hidden" name="param1" value="value1"/>
 <input type="hidden" name="param2" value="value2"/>
 <input type="submit" />
</form>

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

Можно ли это сделать, используя только HTML, без необходимости вводить код при кодировании на стороне сервера?


person nurabha    schedule 27.01.2012    source источник
comment
Даже с формой вам все равно нужно кодировать их в HTML.   -  person SLaks    schedule 27.01.2012
comment
Почему ты не хочешь использовать кнопку?   -  person Adam Hopkinson    schedule 27.01.2012
comment
Я думаю, что с формой для атрибута enctype по умолчанию установлено значение application/x-www-form-urlencoded, и это помогает. Я хочу видеть гиперссылки, а не кнопки, потому что мне нужно несколько таких гиперссылок на одной странице, а кнопки будут выглядеть некрасиво.   -  person nurabha    schedule 27.01.2012
comment
Было бы так просто, если бы в HTML был входной тег типа гиперссылка или href   -  person nurabha    schedule 27.01.2012


Ответы (3)


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

input.LinkButton {
    border: none;
    padding: 0;
    background: transparent;
    color: blue;
    text-decoration: underline;
    display: inline;
    cursor: pointer;
}

Возможно, вам также понадобятся стили :hover и :active.

person SLaks    schedule 27.01.2012
comment
Хорошо, это работает. Но теперь у меня проблемы с отображением подчеркивания текста при наведении. Я искал по всему Интернету, и похоже, что многие браузеры не поддерживают этот атрибут. Теперь я могу столкнуться с проблемами совместимости браузера - person nurabha; 30.01.2012

Вы можете сделать это с помощью Javascript, вызвав encodeURIComponent().

Тем не менее, вы должны сделать это на сервере, чтобы поддерживать браузеры с отключенным Javascript.

person SLaks    schedule 27.01.2012
comment
Я думаю, что OP хочет построить строку запроса из полей формы и добавить ее к действию (т.е. создать запрос на получение), а не uri кодировать отдельные поля - person Adam Hopkinson; 27.01.2012
comment
Я понятия не имею, чего хочет ОП. Вопрос очень запутанный. - person SLaks; 27.01.2012
comment
Извините, что ввел вас в заблуждение, я упростил вопрос сейчас - person nurabha; 27.01.2012
comment
Я до сих пор не понимаю, почему нельзя использовать тег <a>. - person SLaks; 27.01.2012

Можно ли это сделать, используя только HTML, без необходимости вводить код при кодировании на стороне сервера?

Нет. Ссылки принимают URI. Было бы невозможно определить, указывает ли % начало закодированного символа или буквальное %.

Если вы создаете ссылки динамически, то вы уже используете язык программирования. Добавление маршрутизации кодирования к этому тривиально на любом языке.

person Quentin    schedule 27.01.2012