Остановить браузеры, запрашивающие повторную отправку данных формы при обновлении? - PullRequest
36 голосов
/ 01 декабря 2010

У меня есть форма для отправки через POST. Я отправляю форму, и все хорошо, однако, если я пытаюсь перезагрузить новую страницу, на которую она переходит после отправки, я получаю сообщение «Хотите отправить данные» (FireFox). Это может произойти и в других браузерах, но я не уверен.

Кто-нибудь знает, как остановить это сообщение, чтобы я мог продолжить и обновить страницу. Это не подходит для производственных сред - пользователи могут отправлять одну и ту же форму дважды!

Ответы [ 4 ]

48 голосов
/ 01 декабря 2010

Вам необходимо использовать шаблон POST-Redirect-GET.

Сделайте так, чтобы ваша форма отвечала перенаправлением на запрос GET.
Таким образом, когда пользователь обновляет страницу, он только повторно отправляет GET.

9 голосов
/ 07 декабря 2012

Простой способ после response.sendRedirect - перезагрузить страницу следующим образом:

window.location.href = window.location.pathname;

Это работает для меня.

1 голос
/ 21 октября 2014

Если в URL нет параметров, используйте это -

window.location = window.location.href+"?rnd="+Math.random();

Или используйте это -

window.location = window.location.href+"&rnd="+Math.random();

Это будет работать.

0 голосов
/ 01 декабря 2010

Это будет нарушением безопасности, если браузер сделает это.Например, при обработке кредитной карты сайт может взимать с пользователя плату дважды.

Единственный способ - перейти к адресной строке и нажать клавишу ввода.Это вызовет новый запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...