Перезагрузка страницы с параметрами - PullRequest
1 голос
/ 07 июня 2011

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

  • В PHP использование функции header приводит к печально известной ошибке «заголовки уже отправлены».Кроме того, пользователь перенаправляется, потому что не передается ни один параметр.
  • В Javascript location.reload перезагружает страницу, но, опять же, параметр отсутствует, что приводит к тому же результату.

Таким образом, мой вопрос, возможно ли в Javascript перезагрузить страницу с параметром?Или вы знаете другое решение?

Редактировать: Провели ли некоторые тесты с окном оповещения, и URL отображается так, как он отображается в адресной строке.Не знаю, почему параметр не передается.

Ответы [ 5 ]

2 голосов
/ 07 июня 2011

В другой теме я обнаружил, что

window.location.replace(window.location.href)

сохранит параметры.

2 голосов
/ 07 июня 2011

Вы должны задаться вопросом, почему вы получаете ошибку headers already sent.Обычно это потому, что ваш поток неверен.Убедитесь, что вы обрабатываете PHP, прежде чем генерировать вывод.Проверьте отправленную форму в верхней части вашего кода - и безопасно перенаправьте без выполнения чего-либо еще.Должен решить вашу проблему.

1 голос
/ 07 июня 2011

Вместо location.reload страницы вы можете использовать document.location, чтобы перенаправить страницу на ту же страницу с параметром, переданным через GET. Например,

<?php
    $id = $_GET['user_id'];
    echo "<script type='text/js'>
          document.location='".$_SERVER['PHP_SELF']."&id=".$id."';
          </script>";
?>
1 голос
/ 07 июня 2011

В PHP с использованием функции заголовка выдается печально известная ошибка "заголовки уже отправлены".

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

В Javascript location.reload перезагружает страницу, но, опять же, параметр отсутствует, что приводит к тому же результату.

Тогда передайте это?Это должно работать, я думаю?

window.location( window.location.toString( ) );
0 голосов
/ 07 июня 2011

Хорошо, я мог бы также опубликовать это, так как было тяжело заставить что-то работать через javascript и PHP, и у меня нет достаточно времени, чтобы что-то заработало в ajax. Простой обходной путь - просто указать параметр в атрибуте action формы (специальная разметка от smarty).

   <form Method="POST" ACTION="my_page.php?param={$smarty.get.i}">
          <!-- PHP: If ( isset($_POST['next']) ) do SQL ... -->
          <input type="submit" name="like" value="I like">
          <input type="submit" name="next" value="Next" >
   </form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...