Здравствуйте, есть лендинг на reg.ru, в нем две формы, данные из которых должны отправляться на почту(без перезагрузки страницы через ajax). Я в бэкенде не силен, искал различные скрипты, пытался писать что-то сам, но безрезультатно, насколько я понимаю обработчик их получает, но сообщение не отправляется. HTML-код одной из форм: <form class="popup-container__question__form" method="POST"> <p class="popup-container__question__form__text">Задавайте интересующие вас вопросы и я отвечу на них как можно скорее.</p> <input type="text" name="name2" maxlength="30" placeholder="Ваше имя" class="popup-container__form__name"> <input type="email" name="email" maxlength="40" placeholder="email-адрес" class="popup-container__question__form__email"> <textarea name="question" class="popup-container__question__form__textarea"></textarea> <button type="submit" name="questionButton" class="popup-container__question__form__button">Отправить</button> </form> JS: $('.popup-container__question__form').submit(function(event) { event.preventDefault(); $.ajax({ type: "POST", url: "mail.php", data: $(this).serialize() }).done(function() { $('.popup-container__question__form').find('input').val(''); $('.popup-container, .popup-container__question').fadeOut(50); alert("Сообщение успешно отправлено"); $('.popup-container__question__form').trigger('reset'); }); return false; }); PHP: <?php $name1 = $_POST['name1']; $name2 = $_POST['name2']; $phone = $_POST['phone']; $mail = $_POST['email']; $qestion = $_POST['question']; $callbackButton = $_POST['callbackButton']; $qestionButton = $_POST['questionButton']; if(isset($qestionButton)) { $header = 'From: andrewebdev.ru'; $theme = 'Сообщение от клиента'; $letter = 'Пользователь ' . $name2 . ' , email-адрес: ' . $mail . ', оставил сообщение-' . $qestion; mail("Моя почта", $theme, $letter, $header) } ?>
@Taoffy, типичная картина для фронтэндщика: заглушка для отправки писем – полная фигня. Обратитесь уже к знакомому бэкэндщику, а то на форумах такого насоветуют... Наличие POST-параметров не проверяется, значения $header и $theme – фигня.
Вы не то проверяете. Проверяйте наличие реально необходимых параметров без их переливания в переменные (по крайней мере до проверки) – см. isset. Что касается заголовков, включая Subject, см. мою статью Как сделать отправку письма? Контент можно не кодировать, если вся используемая цепочка передачи позволяет, но тогда нужно указать способ кодирования 8bit.
JS Код (Javascript): $( 'body' ).on( 'submit', 'form.AJAX', function( e ) { e.preventDefault(); var formData = new FormData( $( this ).get(0) ); $( 'title' ).html( 'Результат' ); $.ajax( { url: $( this ).attr( 'action' ), type: $( this ).attr( 'method' ), contentType: false, // важно - убираем форматирование данных по умолчанию processData: false, // важно - убираем преобразование строк по умолчанию data: formData, dataType: 'HTML', success: function( h ) { $( '#BLOCK1' ).html( h ); } }); }); html обычная форма - метод, направление - все есть. HTML: <form action = "/inc/create.php" method = "POST" class = "AJAX"> <p> <input type="url" name="url" placeholder="Ссылка на изображение" /> </p> <p> <input type="text" name="phone" placeholder="Номер моб. телефона" /> </p> <p> <input type="submit" value="submit" /> </p> </form> валидация: https://php.net/manual/ru/function.filter-input-array.php есть смысл тратить время на распинания кода ? --- Добавлено --- захожу и вижу фигу