Есть формы обратной связи на сайте, если обрабатывать на прямую (Прописать метод пост и обработчик mail.php прямо в форме), то работает.
В Js я не силен, но решил использовать Ajax
$('form').submit(function () {
// Получение ID формы
var formID = $(this).attr('id');
// Добавление решётки к имени ID
var formNm = $('#' + formID);
$.ajax({
type: "POST",
url: 'mail.php',
data: formNm.serialize(),
success: function (data) {
// Вывод текста результата отправки
$(formNm).html(data);
},
error: function (jqXHR, text, error) {
// Вывод текста ошибки отправки
$(formNm).html(error);
}
});
return false;
});
Mail.php
<?php
require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$name = $_POST['user_name'];
$phone = $_POST['user_phone'];
$mail->isSMTP();
$mail->Host = 'smtp.yandex.ru';
$mail->SMTPAuth = true;
$mail->Username = '123'; // логин от вашей почты
$mail->Password = '######'; // пароль от почтового ящика
$mail->SMTPSecure = 'ssl';
$mail->Port = '465';
$mail->CharSet = 'UTF-8';
$mail->From = '123'; // адрес почты, с которой идет отправка
$mail->FromName = 'Заявка с сайта - портфолио'; // имя отправителя
$mail->addAddress('vamper.2012@gmail.com', 'Имя');
//$mail->addAddress('vamper.2012@gmail.com', 'Имя 2');
$mail->addCC('vamper.2012@gmail.com');
$mail->isHTML(true);
$mail->Subject = 'Ваш сайт';
$mail->Body = '' .$name . ' оставил заявку <br>Телефон этого пользователя: ' .$phone;
$mail->AltBody = 'Привет, мир! Это альтернативное письмо';
//$mail->addAttachment('img/Lighthouse.jpg', 'Картинка Маяк.jpg');
// $mail->SMTPDebug = 1;
if( $mail->send() ){
echo 'Спасибо за отправку сообщения';
}else{
echo 'Письмо не может быть отправлено. ';
echo 'Ошибка: ' . $mail->ErrorInfo;
}
?>
В чем причина, поля приходят пустые, если работаю через ajax?