«— Сколько раз я видел своими глазами, как верблюд не может пройти сквозь игольное ушко?
— Сколько раз я видел, как богач не может войти в Царствие Божие?
— Если Богу угодно, чтобы никто не был богат, зачем Он создал так много денег?»

Кристофер Бакли. «Господь — мой Брокер»

Шторкин.руМоя работа → Технодром

Технодром!Как заставить форму с методом 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, или написать самим.

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


Уважаемые посетители, сайт частично находится на реконструкции.

 

Блог 20

 

Про фотографию 20 (+1)

 

Про кино 3

 


Если ты фотограф бойкий — приходи на «Фото Горький»!

На «Фото Горьком» значительно облагородился раздел «Свадебная фотография в Нижнем Новгороде».

И еще!
Помните, друзья, Don't feed The Troll!



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

Все права на представленные на сайте материалы принадлежат их авторам. Копирование материалов допускается лишь с согласия автора.

Всякое распространение материалов данного сайта без согласия автора преследуется по закону.


Задворки