Самый простой способ дать предупреждение Javascript после перенаправления PHP header () - PullRequest
1 голос
/ 07 октября 2010

У меня есть страница, где пользователи отправляют форму, и она идет в отдельный скрипт PHP.После завершения сценария header () перенаправляет пользователя обратно на страницу, на которой он находился.Теперь я хочу сделать, если в скрипте есть ошибка или определенные условия, перенаправьте пользователя на ту же страницу, но отобразите предупреждение Javascript, как только они попадут туда в виде предупреждающего сообщения.Я мог бы добавить некоторые переменные в URL и проверить это с помощью $ _GET, но я думаю, что, возможно, есть более простой способ ... возможно, с некоторыми данными POST или чем-то в этом роде?Спасибо

Ответы [ 3 ]

2 голосов
/ 07 октября 2010

Вы можете сделать все это на стороне сервера, используя сеанс:

  1. PHP-скрипт «Show form» создает форму и возвращает ее пользователю.

  2. Пользователь заполняет его и отправляет в другой php-скрипт "receive script", который получает данные формы и замечает ошибку, пропущенные данные и т. Д.

  3. «Сценарий получения» сохраняет сообщение об ошибке в сеансе (как элемент err) и перенаправляет в скрипт «show form».

  4. Скрипт «show form» (такой же, как в шаге1) на самом деле делает больше, чем просто создает форму.Он также:

    • смотрит в сеансе, чтобы увидеть, есть ли у него элемент 'err', сообщение об ошибке.На первом этапе не было.Но сейчас есть.Таким образом, скрипт php создает форму вместе с div, который показывает сообщение об ошибке пользователю.
    • Сбрасывает элемент 'err' сеанса на nil.
    • Сценарий php также может включать в себя javascript на странице, который через какое-то время заставит ошибку msg исчезнуть или будет отображаться как всплывающее окно и т. Д.

пс.Вышеприведенный поток показывает, как rails обрабатывает формы и отображает их заново.

Обновление: спасибо @zod за то, что я указал, что я не очищал элемент err в сеансе.

1 голос
/ 07 октября 2010

Если обнаружена ошибка, сохраните состояние ошибки в массиве $ _SESSION, а затем перенаправьте браузер на исходную страницу.Поставьте скрипт на исходной странице, чтобы проверить, установлено ли состояние ошибки.Если да, вызовите предупреждение JavaScript или любую другую обработку, которую вы хотите иметь.

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

Пример:

processor.php

<?php
if($something == $iswrong){
    $_SESSION['errors']['error5301'] = 1;
    session_write_close();
    header("Location: http://www.example.com/originalpage.php");
    exit;
} ?>

originalpage.php

<!-- Header -->
<?php
if(isset($_SESSION['errors']['error5301']) && $_SESSION['errors']['error5301'] == 1){ ?>
    <script type="text/javascript">
        alert('Something is not correct!');
    </script>
<?php } ?>

<!-- Some page content -->
....
.....
..
......

<!-- Footer -->
<?php
if(isset($_SESSION['errors'])){
    unset($_SESSION['errors']);
} ?>

Надеюсь, это поможет.

0 голосов
/ 07 октября 2010

первая страница

<script>
onsubmitfunction()
{

document.getElementByid('errorid').value=1;

}
</script>
<form name='' id='' onsubmit="javascript:onsubmitfunction();">

<input type='hidden' id='errorid' value=''>
</form>

    In destination.php

    <?php
    if($_POST['error']==1)
    {
    ?>
    <script language='javascript'>

    alert('Errrrrorrrr');
    </script>

    <?

    }

    ?>

Этого достаточно для вашего вопроса.

Согласно моему пониманию

...