New! Telegram канал про микроконтроллеры, SDR приемники, радиолюбительство и электронику в целом:

t.me/HighFrequency

На правах рекламы:

Как заставить форму с методом POST передать вводимый параметр методом GET 3 января 2009 г.

При проектировании пресловутого поиска по сайту (см. предыдущий пост) возникла необходимость передавать ключевые слова через адресную строку, что и человеку нагляднее и поисковику понятнее: вдруг ему вздумается засабмитить форму поиска  каким-нибудь релевантным ключевым словом, а тут раз, и что-нибудь найдется, и вся страница поиска с ключевым словом в URL страницы окажется в выдаче (для поисковыков наличие ключевого слова в URL — очень весомый фактор). Если бы я не использовал ЧПУ (Человеко-Понятные Урл, например вместо "index.php?do=search&keyword=никон"  — "/search/никон"), проблем бы это не вызвало, достаточно было в форме указать метод GET, хотя справедливости ради, стоит отметить, что в таком случае ключевое слово, скажем, "запись" преобразовалось бы в вид "%e7%e0%ef%e8%f1%fc", что ни для поисковика, тем более для человека не понятна. Ниже приведен результат танца с бубном:


<form action="search/" method="POST" 
      onsubmit="var keyword = document.getElementById('l').value; 
                this.action='search/'+keyword">
   <input type='text' id='l' name='keyword'>
   <input src='img/icon_search.gif' type='image'>
</form>

Обратите внимание, весь тэг <form> с событиями onclick настоятельно рекомендуется писать одной строкой (здесь он просто не убрался), иначе вы рискуете получить ошибку JavaScript "Illegal Character", т.к. в строке скрипта появится символ перевода строки.

Это упрощенный пример, в качестве кнопки Submit здесь выступает изображение. Данный пример реализован на этом сайте.

Схема работы, как видно, проста: при сабмите формы в свойство action подставляется введенное в текстовое поле значение, причем в адресной строке оно оказывается именно в виде киррилицы, а не в 8-битной кодировке. Но стоит помнить, что все браузеры имеют привычку переводить НЕлатинские символы в Юникод, и в обработчке этой формы следует использовать функцию типа utf8towin(), исходный код которой можно легко раздобыть на сайте http://php.net, или написать самим.

Красная пилюля


comments powered by Disqus

 

Про радио 4

 

Про микроконтроллеры 1

 

Про фото 27

 

Блог 35

 

Про кино 8

 

Про WEB 6

 

 

New! Telegram канал про микроконтроллеры, SDR приемники и радиолюбительство в целом:

t.me/HighFrequency

 

Поток сознания тут — twitter.com/shtorkin

И тут — facebook.com/shtorkin

Сюда можно писать в ЛС — vk.com/shtorkin

Youtube — youtube.com/user/SemenShtorkin

Картинки — instagram.com/shtorkin


  © 2007 – 2018 Семен Шторкин (Семен Орлов)
Для связи:

Все права на представленные на сайте материалы принадлежат Семену Орлову, если не указано иного. При копировании материалов активная индексируемая ссылка на сайт «shtork.in» обязательна.