При попытке отправить форму с использованием AJAX и PHPMailer я олучаю ошибку 405 (Method Not Allowed)
Я создал форму для отправки заявок при помощью 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);
?>
Источник: Stack Overflow на русском