<form method="POST" class="form " id="pacient-form">
<div class="form__content-container form__pacient-status-container" id="pacient-container">
<ul class="form__list reset-list">
<li class="form__list-item">
<label class="form__label">Ваше имя</label>
<input type="text" id="pacient-name" name="pacient-name" placeholder="Евгений"
class="form__input form__input-text _req">
</li>
<li class="form__list-item">
<label class="form__label">E-mail</label>
<input type="text" id="pacient-mail" name="pacient-mail" placeholder="forexample@gmail.com"
class="form__input form__input-text _email _req">
</li>
<li class="form__list-item">
<label class="form__label">Телефон</label>
<input type="text" id="pacient-phone" name="pacient-phone" placeholder="+7 (495) 588-42-88"
class="form__input form__input-text form__input-text-phone _req" data-mask="phone">
</li>
<li class="form__list-item">
<label class="form__label">Кем вы являетесь</label>
<select class="form__input form__input-select _req" id="pacient-status" name="pacient-status">
<option value="Пациент">Пациент</option>
<option value="Родственник пациента">Родственник пациента</option>
<option value="Посетитель">Посетитель</option>
<option value="Другое">Другое</option>
</select>
</li>
</ul>
<ul class="form__list reset-list">
<li class="form__list-item">
<label class="form__label">Страна</label>
<input type="text" id="pacient-country" name="pacient-country" placeholder="Россия"
class="form__input form__input-text _req" list="country">
<datalist id="country">
<option>Австралия</option>
<option>Австрия</option>
<option>Азербайджан</option>
<option>Албания</option>
<option>Алжир</option>
<option>Ангола</option>
<option>Андорра</option>
<option>Антигуа и Барбуда</option>
<option>Аргентина</option>
<option>Армения</option>
<option>Афганистан</option>
<option>Багамы</option>
<option>Бангладеш</option>
<option>Барбадос</option>
<option>Бахрейн</option>
<option>Белиз</option>
<option>Беларусь</option>
<option>Бельгия</option>
<option>Бенин</option>
<option>Болгария</option>
<option>Боливия</option>
<option>Босния и Герцеговина</option>
<option>Ботсвана</option>
<option>Бразилия</option>
<option>Бруней</option>
<option>Буркина-Фасо</option>
<option>Бурунди</option>
<option>Бутан</option>
<option>Вануату</option>
<option>Великобритания</option>
<option>Венгрия</option>
<option>Венесуэла</option>
<option>Восточный Тимор</option>
<option>Вьетнам</option>
<option>Габон</option>
<option>Гаити</option>
<option>Гайана</option>
<option>Гамбия</option>
<option>Гана</option>
<option>Гватемала</option>
<option>Гвинея</option>
<option>Гвинея-Бисау</option>
<option>Германия</option>
<option>Гондурас</option>
<option>Гренада</option>
<option>Греция</option>
<option>Грузия</option>
<option>Дания</option>
<option>Джибути</option>
<option>Доминика</option>
<option>Доминикана</option>
<option>Египет</option>
<option>Замбия</option>
<option>Зимбабве</option>
<option>Израиль</option>
<option>Индия</option>
<option>Индонезия</option>
<option>Иордания</option>
<option>Ирак</option>
<option>Иран</option>
<option>Ирландия</option>
<option>Исландия</option>
<option>Испания</option>
<option>Италия</option>
<option>Йемен</option>
<option>Кабо-Верде</option>
<option>Казахстан</option>
<option>Камбоджа</option>
<option>Камерун</option>
<option>Канада</option>
<option>Катар</option>
<option>Кения</option>
<option>Кипр</option>
<option>Кирибати</option>
<option>Китай</option>
<option>Колумбия</option>
<option>Коморы</option>
<option>Республика Конго</option>
<option>ДР Конго</option>
<option>КНДР</option>
<option>Корея</option>
<option>Коста-Рика</option>
<option>Кот-д’Ивуар</option>
<option>Куба</option>
<option>Кувейт</option>
<option>Кыргызстан</option>
<option>Лаос</option>
<option>Латвия</option>
<option>Лесото</option>
<option>Либерия</option>
<option>Ливан</option>
<option>Ливия</option>
<option>Литва</option>
<option>Лихтенштейн</option>
<option>Люксембург</option>
<option>Маврикий</option>
<option>Мавритания</option>
<option>Мадагаскар</option>
<option>Малави</option>
<option>Малайзия</option>
<option>Мали</option>
<option>Мальдивы</option>
<option>Мальта</option>
<option>Марокко</option>
<option>Маршалловы Острова</option>
<option>Мексика</option>
<option>Микронезия</option>
<option>Мозамбик</option>
<option>Молдавия</option>
<option>Монако</option>
<option>Монголия</option>
<option>Мьянма</option>
<option>Намибия</option>
<option>Науру</option>
<option>Непал</option>
<option>Нигер</option>
<option>Нигерия</option>
<option>Нидерланды</option>
<option>Никарагуа</option>
<option>Новая Зеландия</option>
<option>Норвегия</option>
<option>ОАЭ</option>
<option>Оман</option>
<option>Пакистан</option>
<option>Палау</option>
<option>Панама</option>
<option>Папуа — Новая Гвинея</option>
<option>Парагвай</option>
<option>Перу</option>
<option>Польша</option>
<option>Португалия</option>
<option>Россия</option>
<option>Руанда</option>
<option>Румыния</option>
<option>Сальвадор</option>
<option>Самоа</option>
<option>Сан-Марино</option>
<option>Сан-Томе и Принсипи</option>
<option>Саудовская Аравия</option>
<option>Северная Македония</option>
<option>Сейшелы</option>
<option>Сенегал</option>
<option>Сент-Винсент и Гренадины</option>
<option>Сент-Китс и Невис</option>
<option>Сент-Люсия</option>
<option>Сербия</option>
<option>Сингапур</option>
<option>Сирия</option>
<option>Словакия</option>
<option>Словения</option>
<option>США</option>
<option>Соломоновы Острова</option>
<option>Сомали</option>
<option>Судан</option>
<option>Суринам</option>
<option>Сьерра-Леоне</option>
<option>Таджикистан</option>
<option>Таиланд</option>
<option>Танзания</option>
<option>Того</option>
<option>Тонга</option>
<option>Тринидад и Тобаго</option>
<option>Тувалу</option>
<option>Тунис</option>
<option>Туркменистан</option>
<option>Турция</option>
<option>Уганда</option>
<option>Узбекистан</option>
<option>Украина</option>
<option>Уругвай</option>
<option>Фиджи</option>
<option>Филиппины</option>
<option>Финляндия</option>
<option>Франция</option>
<option>Хорватия</option>
<option>ЦАР</option>
<option>Чад</option>
<option>Черногория</option>
<option>Чехия</option>
<option>Чили</option>
<option>Швейцария</option>
<option>Швеция</option>
<option>Шри-Ланка</option>
<option>Эквадор</option>
<option>Экваториальная Гвинея</option>
<option>Эритрея</option>
<option>Эсватини</option>
<option>Эстония</option>
<option>Эфиопия</option>
<option>ЮАР</option>
<option>Южный Судан</option>
<option>Ямайка</option>
<option>Япония</option>
</datalist>
</li>
<li class="form__list-item">
<label class="form__label">Регион, область</label>
<input type="text" id="pacient-region" name="pacient-region" placeholder="Московская область"
class="form__input form__input-text _req">
</li>
<li class="form__list-item">
<label class="form__label">Населенный пункт</label>
<input type="text" id="pacient-city" name="pacient-city" placeholder="Москва"
class="form__input form__input-text _req">
</li>
<li class="form__list-item">
<label class="form__label">Опишите НР</label>
<textarea placeholder="Опишите ситуацию, симптомы..." class="form__input form__input-textarea _req"
id="pacient-unwanted-reaction-descr" name="pacient-unwanted-reaction-descr"></textarea>
</li>
</ul>
</div>
<p class="form__checkbox-mistake-text" id="pacient-mistake-text">Вы не согласились с правилами сайта.</p>
<div class="form__agree-container">
<label class="form__checkbox-label" for="pacient-checkbox-1">
<input class="form__checkbox _req" id="pacient-checkbox-1" type="checkbox" name="pacient-agree-1" checked>
<span class="form__checkbox-text">Я
ознакомился и согласен с
<a class="quiz__link form__agree-link" href="">Условиями использования
Сервиса</a> и <a class="quiz__link form__agree-link" href="">Условиями использования
Сайта</a>
</span>
</label>
<label class="form__checkbox-label" for="pacient-checkbox-2">
<input class="form__checkbox _req" id="pacient-checkbox-2" type="checkbox" name="pacient-agree-2" checked>
<span class="form__checkbox-text">
Я согласен на <a class="quiz__link form__agree-link" href="">Обработку персональных
данных</a>
</span>
</label>
</div>
<button type="submit" class="form__button" id="pacient-button">Отправить</button>
</form>
Файл JS
"use strict"
document.addEventListener('DOMContentLoaded', function () {
const pacientForm = document.getElementById('pacient-form');
const config = {
method: 'POST',
body: formData
}
pacientForm.addEventListener('submit', formSend);
async function formSend(e) {
e.preventDefault();
let error = formValidate(pacientForm);
let formData = new FormData(pacientForm);
if (error === 0) {
pacientForm.classList.add('_sending');
let response = await fetch('pacientSendMail.php', config);
if (response.ok) {
let result = await response.json();
alert(result.message);
formPreview.innerHTML = '';
pacientForm.reset();
pacientForm.classList.remove('_sending');
} else {
alert("Ошибка JS" + response.status);
pacientForm.classList.remove('_sending');
}
} else {
alert('Заполните обязательные поля')
}
}
function formValidate(pacientForm) {
let error = 0;
let formReq = document.querySelectorAll('._req');
for (let index = 0; index < formReq.length; index++) {
const input = formReq[index];
formRemoveError(input);
if (input.classList.contains('_email')) {
if (emailTest(input)) {
formAddError(input);
error++;
}
} else if (input.getAttribute("type") === "checkbox" && input.checked === false) {
formAddError(input);
error++;
} else {
if (input.value === '') {
formAddError(input);
error++;
}
}
}
return error;
}
function formAddError(input) {
input.parentElement.classList.add('_error');
input.classList.add('_error');
}
function formRemoveError(input) {
input.parentElement.classList.remove('_error');
input.classList.remove('_error');
}
// Функция теста e-mail
function emailTest(input) {
return !/^\w+([.-]?\w+)@\w+([.-]?\w+)(.\w{2,8})+$/.test(input.value);
}
});
Файл 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('ru', 'PHPMailer/language/');
$mail->IsHtml(true);
$mail->isSMTP();
$mail->SMTPAuth = true;
//$mail->SMTPDebug = 2;
// От кого
// Настройки вашей почты
$mail->Host = '...'; // SMTP сервера вашей почты
$mail->Username = 'b2b@mail.ru'; // Логин на почте
$mail->Password = '***'; // Пароль на почте
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setFrom('b2b@mail.ru', 'Ваня Директор'); // Адрес самой почты и имя отправителя
// Кому
$mail->addAddress('vanya@gmail.com');
// Тема письма
$mail->Subject = 'Тема письма - тест';
// Тело письма
$body = '<h1>Заявление пациента о нежелательной реакции</h1>'
if(trim(!empty($_POST['pacient-name']))){
$body.='<p><strong>Имя:</strong> '.$_POST['pacient-name'].'</p>';
}
if(trim(!empty($_POST['pacient-mail']))){
$body.='<p><strong>E-mail:</strong> '.$_POST['pacient-mail'].'</p>';
}
if(trim(!empty($_POST['pacient-phone']))){
$body.='<p><strong>Телефон:</strong> '.$_POST['pacient-phone'].'</p>';
}
if(trim(!empty($_POST['pacient-status']))){
$body.='<p><strong>Кем является:</strong> '.$_POST['pacient-status'].'</p>';
}
if(trim(!empty($_POST['pacient-country']))){
$body.='<p><strong>Страна:</strong> '.$_POST['pacient-country'].'</p>';
}
if(trim(!empty($_POST['pacient-region']))){
$body.='<p><strong>Регион, область:</strong> '.$_POST['pacient-region'].'</p>';
}
if(trim(!empty($_POST['pacient-city']))){
$body.='<p><strong>Населенный пункт</strong> '.$_POST['pacient-city'].'</p>';
}
if(trim(!empty($_POST['pacient-unwanted-reaction-descr']))){
$body.='<p><strong>Описание НР:</strong> '.$_POST['pacient-unwanted-reaction-descr'].'</p>';
}
$mail->Body = $body;
if (!$mail->send()) {
$message = 'Ошибка PHP';
} else {
$message = 'Данные отправлены!';
}
$response = ['message' => $message];
header('Content-type: application/json');
echo json_encode($response);
?>
После нажатия кнопки отправки формы выводится уведомление "Ошибка JS 500".
А также ошибка в консоли (см. на картинке). Не понимаю в чем дело. Может где-то ошибка, либо неправильно подключено что-то. Прошу помогите.
