Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Обновление страницы с элементом FORM (https://javascript.ru/forum/dom-window/12342-obnovlenie-stranicy-s-ehlementom-form.html)

christoforov` 13.10.2010 10:31

Обновление страницы с элементом FORM
 
Здравствуйте.
На странице есть элемент FORM. Передаю данные на сервер. Сервер их принимает и отображает на результирующей странице.
Если нажать "Обновить страницу", то браузер предлагает повторно отправить данные на сервер (мне повторно отправлять данные совсем не нужно!).
После мучений привел начало формы к следующему виду:
<form method=post action=/cgi-bin/forum.pl onSubmit="this.submit(); this.reset();">
В результате предложение браузера выскакивает, но данные вторично не отправляются.
Как избавиться от этого предложения?

Kolyaj 13.10.2010 10:38

Не отдавать сервером никакой контент на POST запросы, а делать редирект на GET.

christoforov` 13.10.2010 10:49

А можно поподробнее?
Если исправит на <form method=get action=/cgi-bin/forum.pl>
...
<input type=submit value="Отправить">
</form>
, то при обновлении страницы запрос не выдается, но сообщение отправляется повторно...

Kolyaj 13.10.2010 10:53

У вас щас: отправили на сервер POST-запрос, сервер выдал в ответ контент.
Надо: отправили на сервер POST-запрос, сервер выдал редирект на другой урл.

lolka84 13.10.2010 10:57

christoforov`, http://phpforum.ru/index.php?showtopic=34620&hl=

subzey 13.10.2010 13:04

Вот тут уточнение. В PHP мало послать заголовок Location, нужно установить код ответа в 303 (по умолчанию при использовании header("Location: …") ставится 302).

Разница в том, что получив 302 браузер (в соответствии с RFC 1945 и RFC 2068) не должен менять метод запроса. Т.е., редиректнуться с методом POST.

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

Нормативная документация

christoforov` 13.10.2010 13:17

На данный момент сделал связку из двух файлов:
<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, время: 07:16.