При попытке отправить форму с использованием AJAX и PHPMailer я олучаю ошибку 405 (Method Not Allowed)

Рейтинг: 0Ответов: 0Опубликовано: 12.07.2023

Я создал форму для отправки заявок при помощью AJAX и PHPMailer, но после отправления формы я получаю ошибку 405 (Not allowed). Выскакивает alert «An error has occurred», что означает, что условеие response.ok равно false. Я выложил проект на сервер, там вообще при отправке формы выдает ошибку "sendmail.php:1 Failed to load resource: the server responded with a status of 500 ()". Где может быть проблема и как ее решить? Заранее спасибо! Это функция formSend в моем файле JS:

document.addEventListener('DOMContentLoaded', function() {
   const form = document.getElementById('form')
   const wrapper = document.getElementById('wrapper')
   form.addEventListener('submit', formSend)

   async function formSend(e) {
      e.preventDefault()
   
      let error = formValidate(form)
      let formData = new FormData(form)

      if (error === 0) {
         form.classList.add('_sending')
         wrapper.classList.add('_sending')
         let response = await fetch('sendmail.php', {
            method: 'POST',
            body: formData
         })
         if (response.ok) {
            let result = await response.json()
            alert(result.message)
            form.reset()
            form.classList.remove('_sending')
            wrapper.classList.remove('_sending')
         } else {
            console.log(response.status)
            alert('An error has occurred')
            form.classList.remove('_sending')
            wrapper.classList.remove('_sending')
         }
      } else {
         alert('Пожалуйста убедитесь, что заполнены все обязательные поля и Вы дали согласие на обработку персональных данных')
      }
   }

sendmail.php:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'phpmailer/src/Exception.php';
require 'phpmailer/src/PHPMailer.php';

$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8';
$mail->setLanguage('uk', 'phpmailer/language/');
$mail->IsHTML(true);

$mail->setFrom('info@fls.guru', 'форма заявки');
$mail->addAddress('kenici780@gmail.com');
$mail->Subject = 'Новая заявка!';

$body = '<h1>Новая заявка!</h1>';

if (trim(!empty($_POST['name']))){
   $body.= '<p>Имя: '.$_POST['name'].'</p>';
}
if (trim(!empty($_POST['surename']))){
   $body.= '<p>Фамилия: '.$_POST['surename'].'</p>';
}
if (trim(!empty($_POST['email']))){
   $body.= '<p>Email: '.$_POST['email'].'</p>';
}
if (trim(!empty($_POST['lesson']))){
   $body.= '<p>Название кружка / секции: '.$_POST['lesson'].'</p>';
}
if (trim(!empty($_POST['address']))){
   $body.= '<p>Адрес: '.$_POST['address'].'</p>';
}
if (trim(!empty($_POST['phone']))){
   $body.= '<p>Телефон: '.$_POST['phone'].'</p>';
}

$mail->Body = $body;

if (!$mail->send()) {
   $message = 'Ошибка отправки формы';
} else {
   $message = 'Заявка отправлена';
}

$response = ['message' => $message];

header('Content-Type: application/json');
echo json_encode($response);
?>

Ответы

Ответов пока нет.