проблема повторной отправки информации - PullRequest
0 голосов
/ 27 ноября 2009

У меня есть панель поиска, где пользователи могут искать видео .. после поиска пользователь продолжает кликать и смотреть видео (из результатов поиска) .. когда пользователь нажимает кнопку «Назад» в браузере, отображается следующее

Чтобы отобразить эту страницу, Firefox должен отправить информацию, которая будет повторять любой действие (например, поиск или заказ подтверждение), которое было выполнено ранее.

вместо того, чтобы просто показывать результаты .. я просто хочу отобразить результаты поиска, когда пользователь нажимает назад .. это что-то связано с кешем? Thankx ..

Ответы [ 4 ]

2 голосов
/ 27 ноября 2009

Если вы не хотите этого, вы можете использовать GET вместо POST для метода формы.

т.е. вы должны использовать что-то вроде этого:

<form action"yourpage.php" method="get">
    ...
</form>

вместо:

<form action"yourpage.php" method="post">
    ...
</form>


Таким образом, параметры, используемые в форме, будут отправлены в URL, а не POST, и пользователи смогут:

  • использовать обратно без проблем, независимо от кеша браузера
  • добавить в закладки страницу результатов (что приятно ^^)


И я должен добавить, что в теории:

  • POST должен использоваться, когда вы хотите создать / изменить данные
  • и GET должен использоваться, когда вы хотите ... ну, получите данные.

При поиске чего-либо с помощью формы поиска ваши пользователи не создают и не изменяют данные: они запрашивают данные, поэтому ваша форма должна использовать метод GET.

2 голосов
/ 27 ноября 2009

Желательно изменить метод поисковой формы на get или использовать шаблон Post / Redirect / Get .

Это сообщение отображается, потому что для повторного рендеринга страницы необходимо повторно отправить данные POST.

1 голос
/ 06 ноября 2012

Чтобы устранить эту проблему, замените существующий top.location.reload() или parent.location.reload(); на top.location.href=top.location.href;.

0 голосов
/ 27 ноября 2009

Нет, это не проблема с кешем. Проблема в том, что вы используете POST для отправки формы поиска. Есть несколько решений.

  • Лучше изменить форму, чтобы использовать GET. Вы можете сделать это, установив атрибут method как

    <form method="get" action="search.php">
    
  • С другой стороны, если вы опасаетесь, что поисковый запрос будет слишком длинным, вы можете сохранить поиск с некоторой формой идентификатора, а затем перенаправить на страницу, которая извлекает этот идентификатор поиска и показывает результат. Перенаправление может быть сделано с

    header('Location: show_search.php?id=' . $searchId);
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...