@fernaton

Почему не работает форма отправки Javascript?

При попытке отправить в браузере вылезает ошибка "Подтвердите действие. Произошла какая то ошибка"

<div class="success">Ваша заявка отправлена!</div>
	<!-- Modal -->
	<div class="modal fade" id="call" tabindex="-1" role="dialog">
	  <div class="modal-dialog" role="document">
	    	<div class="modal-content">
		      	<div class="modal-header">
		       		<h2 class="modal-title">Обратный звонок</h2>
		        	<h4>Заполните поля и мы перезвоним<br>Вам в ближайшее время</h4>
		        	<button type="button" class="close" data-dismiss="modal" aria-label="Close">
		          	<span>&times;</span>
		        	</button>
		      	</div>
	      	<div class="modal-body">
	      		<form action="" method=post>
<input class=name name=fio type=text required placeholder="Ваше имя">
<input class=name name=gorod type=text required placeholder="Ваш город">
<input class=tel name=phone type=text required placeholder="Ваш телефон">
<button type=submit >Перезвоните мне</button>
</form>
	      	</div>
	    </div>
	  </div>
	</div>


$('.modal').on('hidden.bs.modal', function (e) {
	  $('input:not(.type)', $(this)).val('');
	});
	$('form').submit(function(e){
	    e.preventDefault();
		var form_data = {
			'fio':$(".fio", $(this)).val(),
			'phone':$(".phone", $(this)).val(),
			'gorod':$(".gorod", $(this)).val(),
		};
		$.ajax({
		  type: "POST",
		  url: "mail.php",
		  data: form_data,
		  success: function(){
		    $('.modal').modal('hide');
		    setTimeout(function() {
		    	$('.success').fadeToggle();
		    }, 1000);
		    setTimeout(function() {
		    	$('.success').fadeToggle();
		    }, 2500);
		  },
		  error: function() {
		  	alert("Произошла какая то ошибка!");
		  }
		}); 
	});


<?php 

if ($_SERVER["REQUEST_METHOD"] == "POST") {
 if (isset($_POST['fio'])) {$name = $_POST['fio'];}
 if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
 if (isset($_POST['gorod'])) {$gorod = $_POST['gorod'];}
 $to = "belevona@ya.ru";/
 $subject = "Сообщение с лендинга site.ru";
 $subject = "=?utf-8?B?".base64_encode($subject)."?=";
 $message = '
 <h3>Сообщение с лендинга site.ru</h3>
 <p>Имя отправителя:<b> '.$name.'</b></p>
 <p>Город отправителя:<b> '.$gorod.'</b></p>
 <p>Телефон: <b>'.$phone.'</b></p>';
$headers .= 'from: mail2@mail.by' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
if(mail($to, $subject, $message, $headers)){
 exit("Спасибо за заказ");
}
}

?>
  • Вопрос задан
  • 278 просмотров
Решения вопроса 2
Uwe_Boll
@Uwe_Boll
Я Злой и Страшный Уве Болл в Разработке знаю Толк
а консоль о чем говорит?
Приходят ли данные в обработчик?
$to = "belevona@ya.ru";/ заменяем на $to = "belevona@ya.ru";
Ответ написан
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Уберите слеш в конце
$to = "belevona@ya.ru";/
UPD: еще вы пишите
$headers .= 'from: mail2@mail.by' . "\r\n";
используя .=, но при этом, переменная ранее не определена как строка.
Вот нормальный код

<?php 

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (isset($_POST['fio'])) {$name = $_POST['fio'];}
  if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
  if (isset($_POST['gorod'])) {$gorod = $_POST['gorod'];}
  $to = "belevona@ya.ru";
  $subject = "Сообщение с лендинга site.ru";
  $subject = "=?utf-8?B?".base64_encode($subject)."?=";
  $message = '
    <h3>Сообщение с лендинга site.ru</h3>
    <p>Имя отправителя:<b> '.$name.'</b></p>
    <p>Город отправителя:<b> '.$gorod.'</b></p>
    <p>Телефон: <b>'.$phone.'</b></p>';
  $headers = 'from: mail2@mail.by' . "\r\n";
  $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  if(mail($to, $subject, $message, $headers)){
    exit("Спасибо за заказ");
  }
}

?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@xanthipwalkman
Приветствую!
У меня точно такой же вопрос...все перепробовал, что мог в силу своих способностей, не получается получать письма с формы обратной связи...

$('.modal').on('hidden.bs.modal', function (e) {
$('input:not(.type)', $(this)).val('');
});
$('form').submit(function(e){
e.preventDefault();
var form_data = {
'name':$(".name", $(this)).val(),
'tel':$(".tel", $(this)).val(),
'price':$("#price", $(this)).val(),
'square':$("#square", $(this)).val(),
'type':$(".type", $(this)).val()
};
$.ajax({
type: "POST",
url: "mail.php",
data: form_data,
success: function(){
$('.modal').modal('hide');
setTimeout(function() {
$('.success').fadeToggle();
}, 1000);
setTimeout(function() {
$('.success').fadeToggle();
}, 2500);
},
error: function() {
alert("Произошла какая-то ошибка!");
}
});
});

mail.php
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['tel'])) {$tel = $_POST['tel'];}
if (isset($_POST['price'])) {$price = $_POST['price'];}
if (isset($_POST['square'])) {$square= $_POST['square'];}
if (isset($_POST['type'])) {$type = $_POST['type'];}
$to = "ХХХ@ya.ru";
$subject = "Сообщение с лендинга site.ru";
$subject = "=?utf-8?B?".base64_encode($subject)."?=";
$message = '
Сообщение с лендинга site.ru
Имя отправителя: '.$name.'
Телефон: '.$tel.'';
Цена: '.$price.'
Площадь: '.$square.'
Тип: '.$type.'
$headers = 'from: abomne.ru' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
if(mail($to, $subject, $message, $headers)){
exit("Спасибо за заказ");
}
}
?>

При заполнении форм и отправке пишет "Ваша заявка отправлена!"

Помогите пожалуйста
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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