Задать вопрос
@Ingword
Падаван.

Как отправить письмо с сайта и заменить форму на сообщение об успешной отправке?

Привет!

Есть php-код отправки формы на почту:
<?php
error_reporting(0);

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: Сообщение с <info@'.$_SERVER['SERVER_NAME'].'>' . "\r\n" .
		    'X-Mailer: PHP/' . phpversion();

			/* ************ */

			$email = "test@test.ru"; // почта для отправки заявок
			$subject = "Сообщение с test.ru"; // тема письма

			/* ************ */

$message = "<table width='450' border='0' cellspacing='0' cellpadding='5' style='font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #000;'>
  <tr>
    <td colspan='2' style='border: 2px solid #eee; background: #eee; font-weight: 700; font-size: 16px;'>".$subject."</td>
  </tr>";

if (isset($_POST['name']) && !empty($_POST['name'])) {$message .= "<tr>
    <td width='154' style='border: 2px solid #eee; border-top: none; font-size: 14px;'>Имя</td>
    <td width='276' style='border: 2px solid #eee; border-top: none; border-left: none; font-size: 14px;'>".$_POST["name"]."</td>
  </tr>";}

if (isset($_POST['email']) && !empty($_POST['email'])) {$message .= "<tr>
    <td style='border: 2px solid #eee; border-top: none; font-size: 14px;'>Почта</td>
    <td style='border: 2px solid #eee; border-top: none; border-left: none; font-size: 14px;'>".$_POST["email"]."</td>
  </tr>";}

if (isset($_POST['info']) && !empty($_POST['info'])) {$message .= "<tr>
    <td style='border: 2px solid #eee; border-top: none; font-size: 14px;'>Сообщение</td>
    <td style='border: 2px solid #eee; border-top: none; border-left: none; font-size: 14px;'>".$_POST["info"]."</td>
  </tr>";}

$message .= "</table>";

mail($email, $subject, $message, $headers);

?>


HTML-форма:
<form id="form">
            <input type="text" name="name" class="input-field" required placeholder="Как вас зовут?">
            <input type="email" name="email" class="input-field" required placeholder="Ваш e-mail">
            <textarea name="info" class="textarea-field" rows="8" cols="40" placeholder="Расскажите о вашем проекте:"></textarea>
            <button type="submit" class="submit-button">Отправить сообщение</button>
          </form>


И Ajax:
<script type="text/javascript">
  $(document).ready(function(){
    $("#form").submit(function() { //устанавливаем событие отправки для формы
            var form_data = $(this).serialize(); // собираем все данные из формы
            $.ajax({
            type: "POST", //Метод отправки
            url: "mailer.php", //путь до php-файла отправителя
            data: form_data,
            success: function() {
                   //код в этом блоке выполняется при успешной отправке сообщения
                   alert("Ваше сообщение отправлено!");
            }
          });
    });
});
</script>


Коды брал из открытых источников, слегка переделывая под себя (да, я не умею нормально в PHP и Ajax, поэтому и спрашиваю).

Письмо отправляется, но в адресной строке появляется запись после адреса сайта формата:
?name=Имя&email=mail%40gmail.com&info=Сообщение

А сама форма просто исчезает и не выводится даже alert. В чем может быть проблема и как заменить содержание формы без перезагрузки страницы на сообщение "Вы молодец и всё прошло успешно"?
  • Вопрос задан
  • 187 просмотров
Подписаться 1 Оценить 3 комментария
Решения вопроса 1
@Ingword Автор вопроса
Падаван.
Вопрос решил, спасибо человеку, который дал совет и потом удалил свой ответ тут.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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