Задать вопрос
@DigitalEmotions

Как сделать форму обратной связи в одном php-файле?

Здравствуйте. Есть простейшая e-mail форма, отправляемая через обработчик email.php
<form name="form" id="form" method="post" action='email.php'>
 <input type="text" name="name" id="name">
 <input type="text" name="mail" id="mail">
   <button type="button" id="button">Отправить</button>
</form>

Форма проверяется через ajax.
$.post("email.php", $("#form").serialize(), function(result){
                    if(result == 'success'){
$('#form').fadeOut(500);
  }else{
$('#form').html("<span class='red'>Fail!</span>");
}
  });

Ну и в файле email.php уже отправляется письмо.
$subject = $_REQUEST['subject'] . 'Новое письмо';
$to = 'example@mail.com';

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'From: info@mail.com'. "\r\n"
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

$message .= '<b>Имя:</b> ' . $_REQUEST['name'] . "<br><br>";
$message .= '<b>Почта:</b> ' . $_REQUEST['mail'];

if (@mail($to, $subject, $message, $headers))
{
	echo 'success';
}
else
{
	echo 'fail';
}

Хочу вывести все это в одном php-файле, но не понимаю, как тогда сделать проверку на ajax, ведь файла email.php уже не будет.
  • Вопрос задан
  • 384 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
iDokuro
@iDokuro
Тугодум
Если примитивно:

$.post("index.php?action", $("#form").serialize());


А в index.php перед выводом формы:

<?php
if (isset($_GET['action']))
{
   /* Обработка и ответ */
}
Ответ написан
Комментировать
@DigitalEmotions Автор вопроса
Dokuro Тян Так? Почему-то не работает.
<?php
if (isset($_POST['action']))
{
   subject = $_REQUEST['subject'] . 'Новое письмо';
$to = 'example@mail.com';

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'From: info@mail.com'. "\r\n"
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

$message .= '<b>Имя:</b> ' . $_REQUEST['name'] . "<br><br>";
$message .= '<b>Почта:</b> ' . $_REQUEST['mail'];

if (@mail($to, $subject, $message, $headers))
{
  echo 'success';
}
else
{
  echo 'fail';
}
}
?>


<script type="text/javascript">
$.post("index.php?action", $("#form").serialize(), function(result){
                    if(result == 'success'){
$('#form').fadeOut(500);
  }else{
$('#form').html("<span class='red'>Fail!</span>");
}
  });
</script>
<form name="form" id="form" method="post" action='email.php'>
 <input type="text" name="name" id="name">
 <input type="text" name="mail" id="mail">
   <button type="button" id="button">Отправить</button>
</form>
Ответ написан
Ваш ответ на вопрос

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

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