@slagoris

Как сделать отправку формы без перезагрузки?

Приветствую!
Есть форма на сайте. В ней прикручен PHPMailer. Все работает. После отправки формы переходит на отдельную страницу с формой благодарности. Есть необходимость выводить форму благодарности во всплывающем окне без перехода на другую страницу и без перезагрузки текущей. Попап на js прикрутил, после отправки он всплывает, но, хоть я и убрал хвост в php мэйлере о расположении страницы перехода, он, отправляя форму переходит на пустую. вот код мэйлера. Посоветуйте, может тут, что-то поправить. Или мне еще сказали сделать на Ajax, но я еще не знаком, не понял, как, т.к. новичок.
<?php 
$name = $_POST['user_name'];
$phone = $_POST['user_phone'];
$msg = $_POST['feedback'];

require_once('phpmailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->CharSet = 'utf-8';

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.mail.ru';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'xxxxxa@mail.ru';                 // Наш логин
$mail->Password = 'xxxxx;                           // Наш пароль от ящика
$mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465;                                    // TCP port to connect to
 
$mail->setFrom(xxx@mail.ru', 'XXX');   // От кого письмо 
$mail->addAddress(XXX@inbox.ru');     // Add a recipient
//$mail->addAddress('ellen@example.com');               // Name is optional
//$mail->addReplyTo('info@example.com', 'Information');
//$mail->addCC('cc@example.com');
//$mail->addBCC('bcc@example.com');
//$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'новая заявка с сайта';
$mail->Body    = '
	Пользователь оставил свои данные <br> 
	Имя: ' . $name . ' <br>
	Телефон: ' . $phone . '<br> 
	Сообщение: '. $msg .'';
$mail->AltBody = 'Это альтернативный текст';

if(!$mail->send()) {
    echo 'Error';
} else {
    header('location: ../thanks.html');;
}

?>
  • Вопрос задан
  • 764 просмотра
Решения вопроса 1
@pavel_mol
1) Подключить jq
2) Вот пример отправки формы на сервер по средствам ajax
$( "form" ).on( "submit", function( e) {
  e.preventDefault();
  let formParams = $(this).serialize();
  $.ajax({
	url: '/путь_к_твоему_обработчику.php',
	method: 'post',
	dataType: 'json',
	data: formParams ,
	success: function(data){
      //data содержит ответ от сервера, тут показываем попап (если все скрипт отработал успешно)
	}
   });
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
iamd503
@iamd503
Верстальщик
гуглите тогда phpmailer ajax jquery
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
хоть я и убрал хвост в php мэйлере о расположении страницы перехода, он, отправляя форму переходит на пустую.
Чиивоо?

Код аяксовой отсылки в студию, похоже что у вас не аяксом оно отправляется...
Ответ написан
Ваш ответ на вопрос

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

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