Grisha022
@Grisha022

Как показать всплывающее окно после отправки формы?

У меня есть форма, в которой идет отправка логина и комментария. Это все сделано при помощи phpmailer. В моем случае, после отправки формы меня "перекидывает" на главную страницу сайта. Этот кусок кода выглядит так:
if (!$mail->send()) {
	echo 'Error';
	 echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
	header('location: ../index.html');
}

Я хочу, чтобы после отправки формы появлялось всплывающее окно, а не перенаправление на главную страницу.
Всплывающее окно такого рода:
function myFunction()
{
alert("Спасибо! Ваше сообщение отправлено");
}
  • Вопрос задан
  • 2722 просмотра
Решения вопроса 1
flapflapjack
@flapflapjack
на треть я прав
Вы путаете отправку Header'а и открывание всплывающего окна с помощью JS.

Если хотите попроще - сделайте
<?php
header("Location: /index.php?formsubmit");


А в index.php допишите

<?php
if(isset($_GET['formsubmit'])) echo "<script>alert('Форма отправлена!');</script>";


Или в самой форме сделайте

<input type="submit" onclick="alert('Форма отправлена');return true;" value="Отправить">
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@aksined_by
Php-developer
Вопрос хоть и передаёт суть, не говорит об условиях вашего кода.
По клику на отправку почты, вы делаете переход на страницу со скриптом, или вызываете ajax, который шлёт отправку писем без перезагрузки страницы?

Если по клику на отправку почты происходит редирект, то поставленную задачу сделать невозможно.

Если вы делаете ajax запрос, то в случае успеха вы должны вернуть некоторый ответ, который потом нужно разобрать и там уже сгенерировать окно с результатом, например с помощью jquery
$.post(
    'someUrl',
    {
        mailAddress: 'someAddress',
        mailTitle: 'someTitle',
        mailText: 'someText'
    },
    function (response) {
        if (response === 1){
            alert("Спасибо! Ваше сообщение отправлено");
        } else {
            alert("Во время отправки произошла ошибка. Ошибка: " + response);
        }
    }
);


Пример не является решением, лишь пример.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы