2010-07-09 3 views
1

При создании форм поиска на веб-страницах я обычно использую метод GET. Это позволяет получить результаты URI Addressable. Это также обеспечивает легкую разбивку на страницы результатов стандартным образом.Методы разбивки на страницы для больших результатов

А как насчет формы с большим количеством опций и довольно длинными именами полей? Использование запроса GET означает, что URL-адрес страницы результатов может фактически взломать practical URL length limit of 2KB.

Если я перейду на использование POST, я побью предел длины URL. Но тогда я теряю адресную URI. Кроме того, все ссылки для разбивки на страницы необходимо переопределить как небольшие подформы со всеми данными параметров поиска, хранящимися в скрытых полях; поэтому для их работы в качестве ссылок потребуется что-то вроде обработчиков onclick, что делает их пригодными для использования только при включении сценариев на стороне клиента.

Итак, что совет для длинных форм поиска, которые:

  • поддерживают URI адресацию
  • позволяют разумно пагинация ссылке
  • не нарушают Практической URL 2kB предел длиной

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

Что думаете? Спасибо заранее.

ответ

0

Что вам нужно сделать, это использовать метод post - вы не сможете обойти это, если ваш URL-адрес будет превышать лимит (хотя вы можете отсрочить неизбежное, сократив имена и значения).

Возьмите сообщение, а затем перенаправьте клиента на получение, чтобы сохранить адресаты, вы можете либо сохранить сторону поискового сервера от ключа, либо извлечь его на получение (например, из памяти или базы данных), либо вы можете закодировать ключи в один ключ querystring или меньшее количество клавиш, которые фиксируют поведение. Результирующий ответ будет заклассифицирован и т. Д.

Разбиение страницы достаточно просто - просто найдите наличие или отсутствие кнопок навигации в коллекции форм и ответьте соответствующим образом.

+0

Aaah, post, хранить параметры (или результаты) с помощью ключа (возможно, md5 или некоторых таких), а затем перенаправить на получение, которое извлекает с помощью ключа. Хорошая идея. Благодаря! Я собираюсь оставить вопрос открытым (не ответом), чтобы узнать, есть ли у нас какие-то другие идеи. Но ваш ответ наверняка выглядит как твердый кандидат. Благодаря! –

Смежные вопросы