Почему форма автоматически отправляется при обновлении страницы - PullRequest
0 голосов
/ 10 февраля 2012

Кто-нибудь знает, почему форма автоматически повторно отправляется при обновлении страницы?

Я установил файл cookie javascript, чтобы проверить, обновлять ли страницу или нет - если это «ДА», то сделать это и т. Д... Это действие на событие загрузки тела.Форма отправляется через скрытый iFrame.

Проблема в том, что, когда это происходит, форма кнопки «Купить» (отправить) на странице повторно отправляется и, таким образом, возвращается на страницу, с которой она только что вернулась (в корзину).Это происходит в FF, но не в IE.

Любая помощь приветствуется.

Ответы [ 3 ]

1 голос
/ 10 февраля 2012

Обычный подход к решению этой проблемы заключается в том, чтобы связываться с получателем POST:

После того, как сценарий перехвата выполнил всю обработку, требуемую POST, бросьте заголовок Location:, который перенаправляет на текущий запрошенный URI. Это влияет на то, что браузер распознает конечный пункт назначения как не получивший POST, и, следовательно, обновление не будет повторно отправлять POST.

Пример PHP

page.php

<?php
if (!empty($_POST)) {
    // Do some stuff
    header('Location: page.php');
    // The second time around _POST won't have any data,
    // so there's not worry of an infinite loop
    exit;
}
?>
<h1>Hi, I will never try to resubmit POST data!</h1>
0 голосов
/ 10 февраля 2012

Если вы отправили POST для перехода на текущую страницу (вместо публикации, а затем response.redirect для получения текущей страницы), когда вы нажмете кнопку обновления браузера, произойдет повторная отправка. Я не уверен, как это связано с вашей скрытой проблемой Iframe. (Похоже, я дублирую то, что только что сказал Шад).

0 голосов
/ 10 февраля 2012

FireFox предназначен для сохранения ваших форм / входов, который включает кнопки отправки.Это действительно полезно при разработке сайтов с формами, поэтому вам не нужно постоянно их заполнять, но иногда это может помешать, но это функция браузера, а не проблема кода.

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