мод переписать форму поиска GET vs POST ACTION - PullRequest
0 голосов
/ 02 марта 2011

Привет и спасибо, что нашли время для этого вопроса.

Я использую форму поиска, используя jQuery для поиска в реальном времени. Панель поиска есть на каждой странице моего сайта и работает нормально. Теперь я хочу расширить его. Когда люди нажимают клавишу Enter, я хочу, чтобы они были перенаправлены на страницу поиска, где они получают все результаты.

Единственная проблема в том, что метод Get не работает. Моя форма выглядит так:

<form action="search/search" id="Searchform" method="GET">
<p><input type="text" name="SearchInput" id="SearchInput" value=""  onkeyup="lookup(this.value);" /></p>
<div class="clear"></div>
<div id="suggestions"></div>
</form>

Мой файл .htaccess содержит это правило перезаписи для страницы поиска:

RewriteRule ^search/([^/]*)$ search.php?mode=$1 [L]

Каждый раз, когда я нажимаю кнопку ввода, я получаю это:

search/search?SearchInput=moonwalker

И, используя метод GET, я не могу получить значение SearchInput вообще.

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

Итак, мой вопрос: почему я должен использовать метод GET для поисковых страниц? Есть ли какие-то большие преимущества, если я просто решу использовать POST вместо метода GET?

Я знаю, что могу использовать перенаправления и т. Д. Для выполнения этого с помощью метода GET, но я просто хочу знать, почему POST считается плохой практикой в ​​поисковых формах.

Заранее спасибо за помощь!

Ответы [ 2 ]

5 голосов
/ 02 марта 2011

Вам необходимо повторно добавить строку запроса:

RewriteRule ^search/([^/]*)$ search.php?mode=$1 [L,QSA]

QSA выше делает волшебство.В противном случае все в URL после ? усекается и заменяется новой строкой запроса ?mode=foo.

. Чтобы ответить на вопрос: по нескольким причинам рекомендуется выполнять запросы без преобразования с помощью GET.(все, что просто создает представление) и изменение запросов (например, опубликовать комментарий или новый продукт) с помощью POST.Эрик Петроэль приводит несколько причин в своем ответе.Некоторые другие могут быть найдены, когда вы Google для REST + GET + POST.(Это приводит, например, к этому SO вопросу )

4 голосов
/ 02 марта 2011

На мой взгляд, несколько причин, почему вы хотите использовать GET для экранов поиска:

  1. Это позволяет людям делать закладки / ссылаться на поиск или отправлять поиск кому-либо еще.
  2. Позволяет поисковым запросам быть проиндексированными Google .Робот Google не будет отправлять формы POST.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...