Обновление страницы с элементом FORM
Здравствуйте.
На странице есть элемент FORM. Передаю данные на сервер. Сервер их принимает и отображает на результирующей странице. Если нажать "Обновить страницу", то браузер предлагает повторно отправить данные на сервер (мне повторно отправлять данные совсем не нужно!). После мучений привел начало формы к следующему виду: <form method=post action=/cgi-bin/forum.pl onSubmit="this.submit(); this.reset();"> В результате предложение браузера выскакивает, но данные вторично не отправляются. Как избавиться от этого предложения? |
Не отдавать сервером никакой контент на POST запросы, а делать редирект на GET.
|
А можно поподробнее?
Если исправит на <form method=get action=/cgi-bin/forum.pl> ... <input type=submit value="Отправить"> </form> , то при обновлении страницы запрос не выдается, но сообщение отправляется повторно... |
У вас щас: отправили на сервер POST-запрос, сервер выдал в ответ контент.
Надо: отправили на сервер POST-запрос, сервер выдал редирект на другой урл. |
christoforov`, http://phpforum.ru/index.php?showtopic=34620&hl=
|
Вот тут уточнение. В PHP мало послать заголовок
Location , нужно установить код ответа в 303 (по умолчанию при использовании header("Location: …") ставится 302 ).Разница в том, что получив 302 браузер (в соответствии с RFC 1945 и RFC 2068) не должен менять метод запроса. Т.е., редиректнуться с методом POST. Получив же в ответ статус 303, браузеру следует редиректнуться, используя метод GET. Нормативная документация |
На данный момент сделал связку из двух файлов:
<form method=post action=/cgi-bin/forum2.pl> <input type=submit value="OK"> </form> а в скрипт forum2.pl прописал <meta http-equiv="Refresh" content="4;url=/cgi-bin/forum.pl"> Это называется "Редирект"? Все замечательно работает, но хотелось бы уместить весь форум в ОДИН файл. PHP не подходит, нужен только JS |
Часовой пояс GMT +3, время: 12:57. |