@Web__Nikita03

Почему не работает ajax форма?

Почему не работает форма ? Она просто перезагружается но не что не отправляет . Делаю через Open Server.
<form action="" method="POST" id="form">
						<input type="text" name="name" class="form__input" required placeholder="Имя">
						<input type="mail" name='email' class="form__input" required placeholder="E-mail">
						<input type="tel" name="phone" id="phone" class="form__input" required>
						<input type="submit" class="form__btn" name="btn" value="Заказать консультацию">
					</form>


<?
if((isset($_POST['name'])&&$_POST['name']!="")&&(isset($_POST['phone'])&&$_POST['phone']!="")){ //Проверка отправилось ли наше поля name и не пустые ли они
        $to = 'dennikita03@gmail.com'; //Почта получателя, через запятую можно указать сколько угодно адресов
        $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
}
?>


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

JS находится в html..
  • Вопрос задан
  • 988 просмотров
Пригласить эксперта
Ответы на вопрос 3
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
ваша форма шлет обычный post запрос на тот урл на котором находится, и правильно делает. Если хотите перехватывать и слать средствами js, то надо отменять стандартное действие:
$("#form").submit(function(e){
e.preventDefault();
.....

Так что все шлется, просто без участия js. То что Вы наблюдаете это не перезарузка, а post запрос на текущий урл.
Ответ написан
demon416nds
@demon416nds
Разработчик на чем попало
для начала глянь в инспекторе браузера куда и какой запрос отправляет твоя форма
зы action лучше прописывать явно
Ответ написан
Комментировать
Exploding
@Exploding
wtf?
В action формы стоит указать mail.php для случаев, когда js отключен.
В обработчике submit следует отменить действие по-умолчанию:
$(document).ready(function(){
      $("#form").submit(function(e) { //устанавливаем событие отправки для формы с id=form
          e.preventDefault();
          var form_data = $(this).serialize(); //собераем все данные из формы
          $.ajax({
          type: "POST", //Метод отправки
          url: "mail.php", //путь до php фаила отправителя
          data: form_data,
          success: function() {
               //код в этом блоке выполняется при успешной отправке сообщения
               alert("Ваше сообщение отпрвлено!")
          }});
      });
    });

Это как минимум, а дальше смотрите там уже... Есть консоль, есть "Network" для контроля запросов и ответов. Стоит просто нажать F12
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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