День добрый. Прошу помощи с простым кодом, но блин не работает. Подробнее: Есть сайт autosollers.ru, на нём есть форма отправки сообщений. Код простой Код (Text): <form action="mail.php" method="post" class="request-form ftco-animate"> . Собственно mail.php - обработчик, ничего сложного, в конце mail.php стоит редирект Код (Text): header("Location: http://www.autosollers.ru"); . Здесь вопросов нет. Но при подключении вывода сообщений об успешной отправке (вывожу кодом Код (Text): <input type="submit" value="Отправить" class="btn btn-primary py-3 px-4" id="zayavka" onClick="modal();"> и соответственно скрипт Код (Text): <script type="text/javascript"> <div id="modal" style="display: none;">Скрытый блок</div> function modal() { document.getElementById('modal').style.display = "block"; } </script> т.е. при нажатии кнопки отправить должен быть виден срытый блок - но его нет. Где неправ, подскажите?
Так это не работает. Есть варианты реализации, например записать успешное действие в сессию и вывести её на странице, а после разрушить. mail.php PHP: $_SESSION["success"] = 'Успех'; index.php PHP: if ( !empty ( $_SESSION["success"] ) ) { print ( $_SESSION["success"] ); unset ( $_SESSION["success"] ); } Либо с использованием jquery + ajax, примеров в google достаточно. И в случае с ajax, ты сможешь легко манипулировать данными на странице как пожелаешь. Скрывать/Показывать блоки, выводить информацию.
Спасибо. Красивое решение. Сейчас попробую. --- Добавлено --- Попробовал. Результат тот же. У меня на html сайт, вставил <? код ?> --- Добавлено --- Сделал так Код (Text): <?php session_start(); if(isset($_SESSION['success']) && $_SESSION['success'])) : ?> <div class="alert-success">Успех .........</div> <?php $_SESSION['success'] = null; endif; ?> , ну и соответственно класс подредактирую что-бы красиво выводилось. И исчезало через некоторое время.
Ещё вопрос по теме. Код (Text): <?php session_start(); if(isset($_SESSION['success']) && $_SESSION['success'])) : ?> <div class="alert-success">Спасибо! Сообщение отправлено.</div> <?php unset ( $_SESSION['success'] ); $_SESSION['success'] = null; endif; ?> . В index деинициализирую переменную $_SESSION['success']. По логике при перезагрузке страницы div alert-success не должен выводиться, но он отображается.
это тебе так кажется... что деинициализируешь... PHP: unset ($_SESSION['success'] ); тут удалил а следуюущей строкой опять определил PHP: $_SESSION['success'] = null
а почему бы им не выводиться? ... а вообще так синтаксис не приемлю ... в каждой строчке теги хотя-бы так PHP: <?php session_start(); if(isset($_SESSION['success']) && $_SESSION['success'])) { echo '<div class="alert-success">Спасибо! Сообщение отправлено.</div>'; unset($_SESSION['success'] ); } ?>
Вывели один раз, далее unset - сбрасываем переменную., при перезагрузке страницы проверяем если переменная success установлена, то выводим сообщение. Логика такая была.