форма POST и кнопка back

tihon972009

Представим себе POST-форму, выдающую после ее заполнения некий список, который разбит по страницам.
Разбивка по страницам реализована следующим образом: в форме есть скрытое поле. Каждый раз при нажатии на соотв. страницу с помощью специльной Javascript'овой функции в это поле вбивается соответствующее значение (номер нужной страницы с этим значением форма отправляется, и выдается уже нужная страница результатов.
(зачем сделано именно так - вопрос не ко мне и давайте это сейчас обсуждать не будем).
Проблема вот какая: заполнили, допустим, форму и потыкались по страницам выдачи - например, перешли с первой на вторую. После чего кнопкой back захотели вернуться обратно на первую.
FF выбрасывает окно " .. для повторной отправки данных нажимите то-то .. ", ну, короче, там надо жать ОК, тогда будет показана предыдущая страница.
В Опере 9 нормально, ничего не спрашивает (т.к., видимо, закешировано).
Самый пиздец в IE6 (7 не смотрел): при нажатии на Back говорит, что "the page cannot be displayed, .. refresh ..". При нажатии F5 выдает незаполненную форму,при этом результаты поиска, естественно, проебываются.
Как сделать, чтобы, грубо говоря, было как в Опере - то есть чтобы браузеры, ничего не спрашивая, просто переводили на следующую/предыдущую страницу при нажатии соотв. кнопки навигации?
(я чет торможу, не могу никак понять, как это сделать).

kruzer25

Перейти на get.
Подсказка: если это поиск, хранить его результаты в БД, а передавать не параметры запроса, а id поиска.

kruzer25

Да, кстати - тебе не кажется, что выбор раздела какой-то... не очень хороший?

Ivan8209

Да ладно.
Выбор раздела вполне адекватный, сообщение наглядно показывает,
какое говно производит "Микрософт."
---
"C:>WIN
The computer obeys and wins.
You lose and Bill collects."

kruzer25

1) Микрософт тут ни при чём.
2) Не знаю, как там извращался аффтар, но у меня ИЕ (6/7) в подобных ситуациях ведёт себя, как ФФ - говорит, что были отправлены данные, и спрашивает, хочу ли я отправить их ещё раз.

pitrik2

встречал сайты где ие работает и встречал сайты где не работает
отчего это зависит не знаю
полюбому ие забывает на предыдущепй сранице твои данные, их нада по новой вбивать
но тут уже ничего не сделаешь

tihon972009


Перейти на get.
Первое, что пришло мне в голову.
Однако, заказчик против GET.
(кстати, на самом деле в этом есть доля правды, т.к. там много переменных - строка адреса будет шо пездец.)

Подсказка: если это поиск, хранить его результаты в БД, а передавать не параметры запроса, а id поиска.
Я смотрю, ты наркоман полный )
1. Специально для таких вещей существует MySQL query cache.
2. Опиши, если не впадлу, как ты себе это вообще представляешь (реально интересно, если это где-то реализовано)

tihon972009

Да, кстати - тебе не кажется, что выбор раздела какой-то... не очень хороший?
Бля, и правда. Просто у меня предыдущий пост в H&S был, вот я переключить и забыл.

tihon972009


Не знаю, как там извращался аффтар, но у меня ИЕ (6/7) в подобных ситуациях ведёт себя, как ФФ - говорит, что были отправлены данные, и спрашивает, хочу ли я отправить их ещё раз.
Попробуй здесь

kruzer25

т.к. там много переменных - строка адреса будет шо пездец
Ну так я же говорю - хранить результаты поиска/параметры запроса в БД с каким-нибудь id - они же у тебя не меняются, т.е. достаточно будет передавать только этот id и номер страницы.
Опиши, если не впадлу, как ты себе это вообще представляешь (реально интересно, если это где-то реализовано)
Насчёт существующей реализации - кажется, я что-то такое видел в phpbb.
Насчёт того, как это сделать - тут что-то сложно, разве? Клиент вводит кучу параметров, нажимает "искать" - ищем все результаты по его запросу, сохраняем список результатов в бд с ид поиска, перекидываем клиента на searchresults?searchid=**ID**&page=0

kruzer25

Ввёл параметры поиска, мне выдались результаты; пошёл на вторую страницу, нажал "назад" - ИЕ7 выдал "веб-страница истекла, если вы хотите увидеть её содержимое, нажмите F5" (причина, видимо, в заголовках - т.е. сайт сказал что-нибудь вроде "обновить эту страницу после 01.01.1970"). Нажал F5 - ИЕ спросил, действительно ли я хочу отправить данные ещё раз (ему-то откуда знать, мб я там ввёл номер своей кредитной карты, сумму и нажал кнопку "оплатить" - тогда ни в коем случае нельзя самому обновлять страницу) - сказал "да, хочу", после чего ИЕ опять загрузил эту первую страницу результатов.
Что тут не так?

livemix

идеально - любую страницу показывать по гет-запросу.
Соответственно, если все-таки используешь пост для передачи данных серверу, то после поста надо сохранять данные на сервере и делать редирект на гет, чтобы отобразить данные.
Все это нужно исключительно ради удобства пользователя.
Оставить комментарий
Имя или ник:
Комментарий: