@danilr

Почему axios не отправляет данные на БЭК?

Задача бэка только получить данные и отправить на почту. Бэку передаю с Vue SPA axiosом, но почему то данные не доходят до бэка, а письмо как надо отправляет. Есть аналогичный проект, но там без SPA и через ajax. Подскажите в чем проблема?
бэк:
<?
use PHPMailer\PHPMailer\PHPMailer;

require 'phpmailer/Exception.php';
require 'phpmailer/OAuth.php';
require 'phpmailer/PHPMailer.php';
require 'phpmailer/POP3.php';
require 'phpmailer/SMTP.php';
$mail = new PHPMailer;
$mail->setFrom("leads@wonlex-smart.ru");
$mail->addAddress('danil2777@yandex.ru');
$mail->CharSet = "UTF-8";
$mail->Subject = htmlspecialchars('Заявка на информацию о консервах');
$message = '';
$message = '
		<html>
			<head>
				<title>'.$subject.'</title>
			</head>
			<body>
			<p>Консервы: '.$_POST.'</p>
				<p>Консервы: '.$_POST['food'].'</p>                        
				<p>Телефон: '.$_POST['phone'].'</p>                        
			</body>
		</html>';
$mail->msgHTML($message);
if (!$mail->send()) {
	echo json_encode(['success' => false, 'msg' => "Mailer Error: " . $mail->ErrorInfo]);
} else {
	$message = '<div class="thanks">
					<div class="thanks-top">СПАСИБО ЗА ЗАЯВКУ!</div>
					<div class="thanks-text">Наш менеджер свяжется с Вами в ближайшее время</div>
				</div>';
	echo json_encode(['success' => true, 'msg' => $message, 'post' => $_POST]);
}
?>

send(){
      const dataForm = {
        food: this.$store.state.currentFood ? this.$store.state.currentFood.title : 'Заявка из каталога',
        phone: this.phoneValue
      }
      console.log('dataForm: ', dataForm);
      // const str = JSON.stringify(dataForm);
      HTTP.post(Routes.postRequest, dataForm)
      .then(({data}) => {
        console.log(data);
      })
      .catch(error => {
        console.error(error);
        this.isLoading = false;
      })
      console.log('phoneValue', this.phoneValue);
    }
  },


И вот из другого проекта, где все работает.
sendForm(){
		var phone = document.getElementById('phone-field').value;
		if(!phone.match(/\+7\s\(\d{3}\)\s\d{3}\-\d{2}\-\d{2}/)) {
			return;
		}
		$.ajax({
			type: "POST",
			url: "/ajax/send.php",
			data: {
				phone: phone,
				watch: this.show.name
			},
			dataType: 'html',
			success: function(data) { 
				var data = JSON.parse(data);
				if(data.success) {
					$('.callback-form').html(data.msg);
					ym(54152995, 'reachGoal', 'count');
				} else {
					alert(data.msg);
				}
			}
		});
	  },
  • Вопрос задан
  • 745 просмотров
Решения вопроса 1
megafax
@megafax
web-программист
У Вас тип отправляемого сообщения - application/json, отправьте в application/x-www-form-urlencoded, а то у Вас $_POST - пустой. Либо парсите самостоятельно из "php://input"
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vit134
Возможно стоит покопать в сторону заголовков передаваемых вместе с запросом.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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