nchur
@nchur

Как сделать переход по ссылке с помощью input?

Есть кнопка ввода текста, после которой должно редеректить на страницу с результатами поиска, вот код:
<div class="textbox"><input type="text"  name="?kek&results" value="" class="text" /></div>


Но проблема состоит в том, что при таком коде редеректит не на имя_домена/результаты.htm/?kek&results=введенный_текст, а на имя_домена/результаты.htm/?%3Fkek%26results=введенный_текст

Можно ли это как-то иправить?
  • Вопрос задан
  • 781 просмотр
Решения вопроса 1
@ned4ded
Верстка, Фронтенд
Добрый день! Могу лишь помочь вам с высоты своих скромных знанйи (я в http не очень шарю). Но мне кажется, вы немного запутались в языке самого протокола и процессе отправки данных с формы.

Текст отправляется именно такой, потому что ? - это %3F в unicode. Любое name с формы будет перекодировано в base64. Сам же ? в конец строки браузера подставляется при формировании запроса к серверу (т.е. браузером, а не вами), сл-но, его нужно исключить.

Тоже самое происходит со знаком амперсанд. Браузером автоматически собираются параметры с формы и отправляются на сервер используюя такую структуру: key=value&key2=value2...

Следующий код сформирует запрос ?kek=&results=<your_text> к целевому пути

<form action="/targetPage.html" method="GET">
    <input name="kek" hidden>
    <input type="text" name="results" value=""> // здесь нужно будет ввести текст
  </form>


Как видите, в таком случае после слова kek подставляется знак равенство, т.к. это соответствует протоколу http. Веротяно, можно настроить http сервер, который сможет принимать и обрабатывать запросы без = (без пустого параметра), но я в точности вас сейчас просветить по этому моменту не смогу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ni55aN
@Ni55aN
decodeURIComponent('имя_домена/результаты.htm/%3Fkek%26results=введенный_текст')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы