0
<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(&quot;Ошибка JS&quot; + response.status);
    pacientForm.classList.remove('_sending');
  }
} else {
  alert('Заполните обязательные поля')
}

}

function formValidate(pacientForm) { let error = 0; let formReq = document.querySelectorAll('._req');

for (let index = 0; index &lt; formReq.length; index++) {
  const input = formReq[index];
  formRemoveError(input);

  if (input.classList.contains('_email')) {
    if (emailTest(input)) {
      formAddError(input);
      error++;
    }
  } else if (input.getAttribute(&quot;type&quot;) === &quot;checkbox&quot; &amp;&amp; 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". А также ошибка в консоли (см. на картинке). Не понимаю в чем дело. Может где-то ошибка, либо неправильно подключено что-то. Прошу помогите. введите сюда описание изображения

0 Answers0