Bazhenovdev
@Bazhenovdev
bazhenovn.github.io

Отправка формы jQuery + AJAX + PHP?

Всем привет друзья, вот есть такая форма. Что не делаю не работает, просто не отправляет письмо.. в чем проблема?

<form id="form">
    <input type="text" name="name" required="required"/>
    <input type="text" name="phone" required="required"/>
    <input type="submit" value="Заказать звонок"/>
</form>


<?
if((isset($_POST['name'])&&$_POST['name']!="")&&(isset($_POST['phone'])&&$_POST['phone']!="")){ //Проверка отправилось ли наше поля name и не пустые ли они
        $to = 'mail@yandex.ru'; //Почта получателя, через запятую можно указать сколько угодно адресов
        $subject = 'Обратный звонок'; //Загаловок сообщения
        $message = '
                <html>
                    <head>
                        <title>'.$subject.'</title>
                    </head>
                    <body>
                        <p>Имя: '.$_POST['name'].'</p>
                        <p>Телефон: '.$_POST['phone'].'</p>                        
                    </body>
                </html>'; //Текст нащего сообщения можно использовать HTML теги
        $headers  = "Content-type: text/html; charset=utf-8 \r\n"; //Кодировка письма
        $headers .= "From: Отправитель <from@example.com>\r\n"; //Наименование и почта отправителя
        mail($to, $subject, $message, $headers); //Отправка письма с помощью функции mail
}
?>


$(document).ready(function(){
    $("#form").submit(function() { //устанавливаем событие отправки для формы с id=form
            var form_data = $(this).serialize(); //собераем все данные из формы
            $.ajax({
            type: "POST", //Метод отправки
            url: "send.php", //путь до php фаила отправителя
            data: form_data,
            success: function() {
                   //код в этом блоке выполняется при успешной отправке сообщения
                   alert("Ваше сообщение отпрвлено!");
            });
    });
});
  • Вопрос задан
  • 23410 просмотров
Пригласить эксперта
Ответы на вопрос 5
mrusklon
@mrusklon
Не получается? Яростно гугли!
а может просто не подключен jQuery ?
Ответ написан
Комментировать
Raxen
@Raxen
TechLead Frontend Developer, Beeline
Как минимум синтаксическая ошибка -
$(document).ready(function(){
    $("#form").submit(function() {
        var form_data = $(this).serialize();
        $.ajax({
        type: "POST",
        url: "send.php",
        data: form_data,
        success: function() {
               alert("Ваше сообщение отпрвлено!");
        } // забыли закрыть success
      });
    });
});


1. Без Аякса форма работает?
Если нет, дело в пхп файле,
2. Сервер позволяет отправлять письма?
3. Сервер позволяет отправлять письма с произвольных емейлов?
Если да, да, да, то как вы проверяете, что письмо отправлено/не отправлено, кроме флага success в аякс запросе?
Ответ написан
ms-dred
@ms-dred
Вечно что то не то и что то не так...
Сделай проверку.
В PHP в начале кода пропиши
return $_POST;
С помщью ajax выведи то что получает сервер
вместо
success: function() {
               
        }

Напиши
success: function(data) {
               alert(JSON.stringify(data));
        }


Если получишь данные с формы, значит все в порядке и нужно копать дальше уже в самом PHP, может хостером отключена возможность отправки mail()
Ответ написан
@Galyanoff
Нашел эту форму на хабре
https://habrahabr.ru/sandbox/93363/

Тоже проблема. Без аякс отправляет, с аяксом нет, перезагружает страницу и все.
Ответ написан
Комментировать
@kvalex
$("form").submit(function(event) {
		event.preventDefault();
		$data = $(this).serialize();
		if(!$(this).attr("action")) { var $url = document.location.href; } else { var $url = $(this).attr("action"); }
		if(!$(this).attr("method")) { var $method = "post"; } else { var $method = $(this).attr("method"); }
		$.ajax({
		  url: $url,
		  type: $method,
		  data: $data, 
		  dataType: "json",
		  success: function(data){ 
		  	
		  }
		});
	});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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