NemoNab
@NemoNab

Как отправить данные формы на почту?

Как отправить форму, валидированную с помощью jQuery.validation? Пробовал отправить данные вот такими скриптами:
function ajax() { //Ajax отправка формы
	var msg = $(".contForm").serialize();
	$.ajax({
		type: "POST",
		url: "./mail.php",
		data: msg,
		success: function(data) {
			alert("ОК!");
		},
		error:  function(xhr, str){
			alert("Возникла ошибка!");
		}
	});
}

$('.contForm').validate({
        submitHandler: function(form) {
			var th = $(this);
			$.ajax({
				type: "POST",
				url: "mail.php", //Change
				data: th.serialize()
			}).done(function() {
				alert("Thank you!");
				setTimeout(function() {
					// Done Functions
					th.trigger("reset");
				}, 1000);
			});
			return false;
		},
	});

Собственно, валидация работает хорошо, да и php-скрипт не должен сбоить, а с JS разобраться не могу.
  • Вопрос задан
  • 437 просмотров
Решения вопроса 1
passshift
@passshift
php, js, html5, css
Покажите содержимое mail.php ведь именно через него должна происходить отправка. Ajax просто динамически возвращает результат "Ок" или "Возникла ошибка!", а перед этим jQuery.validation проверяет правильность заполнения полей формы.

В своем PHP-скрипте разбирайтесь, почитайте - php.net/manual/ru/function.mail.php
Разберитесь с расположением файла mail.php, у вас в примерах пути отличаются
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
NemoNab
@NemoNab Автор вопроса
Да, с путями видно и правда беда.
Вот код почтовика:
<?php

$method = $_SERVER['REQUEST_METHOD'];

//Script Foreach
$c = true;
if ( $method === 'POST' ) {

	$project_name = trim($_POST["project_name"]);
	$admin_email  = trim($_POST["admin_email"]);
	$form_subject = trim($_POST["form_subject"]);

	foreach ( $_POST as $key => $value ) {
		if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
			$message .= "
			" . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
				<td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
				<td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
			</tr>
			";
		}
	}
} else if ( $method === 'GET' ) {

	$project_name = trim($_GET["project_name"]);
	$admin_email  = trim($_GET["admin_email"]);
	$form_subject = trim($_GET["form_subject"]);

	foreach ( $_GET as $key => $value ) {
		if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
			$message .= "
			" . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
				<td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
				<td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
			</tr>
			";
		}
	}
}

$message = "<table style='width: 100%;'>$message</table>";

mail($admin_email, $form_subject, $message, "From: $project_name <$admin_email>" . "\r\n" . "Reply-To: $admin_email" . "\r\n" . "X-Mailer: PHP/" . phpversion() . "\r\n" . "Content-type: text/html; charset=\"utf-8\"");
Ответ написан
Ваш ответ на вопрос

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

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