Задать вопрос
Odinokun
@Odinokun

Как сделать что бы после отправки письма на экране ничего не происходило?

Доброго времени суток.
Подскажите пожалуйста, как настроить Phpmailer так, что бы после нажатия кнопки "Отправить" у меня кроме самой отправки письма больше ничего не происходило (не перенаправляло меня на другие страницы, не всплывали никакие окна и т.д.).
На данный момент у меня в файле settings_mail.php написано
if ($mail->send()){
    header("Location: https://www.google.com/"); 
}

и меня перенаправляет на главную страницу Гугла, если эту строку убрать, то после отправки у меня остается белая страница.

UPD. В этом видео решение проблемы с помощью AJAX https://youtu.be/FQWO03fgUPM?t=16m45s
Смотреть с 16:45.
  • Вопрос задан
  • 1267 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Akdmeh
@Akdmeh
PHP, Yii2, Music
Вам нужно поцепить событие на submit формы и при ее нажатии отправлять AJAX-запрос.
Если используете фреймворк, погуглите "<название фреймворка> AJAX формы".
В любом случае, необходимо базовое понимание JS (или в частности JQuery), тогда вы все запросто реализуете.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Тут два варианта, как мне кажется:
1) Как уже писали - использовать AJAX (самый лучший вариант)
2) header('Location: '.$_SERVER['REQUEST_URI']); - вставить вместо перенаправления к гуглу, так страница просто перезагрузится
Ответ написан
Комментировать
Подозреваю, что у вас стоит условие на отображение формы, типа так
if ($mail->send()){
    header("Location: https://www.google.com/"); 
} else {
    // show html form
}


Вам нужно убрать это условие, чтобы форма отображалась всегда, или вместо редиректа вывести сообщение об успешной отправке. Либо совместить эти решения)

if ($mail->send()){
   echo 'Thank! Your message has been sent!';
}

// show html form


Ну а вообще, хотелось бы увидеть чуть больше кода, чтобы понимать в чем проблема.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы