Почему не отправляется форма?
"use strict" document.addEventListener('DOMContentLoaded', function () { const form = document.getElementById('form'); form.addEventListener('submit', formSend); async function formSend(e) { e.preventDefault(); let error = formValidate(form); let formData = new FormData(form); if (error === 0) { let response = await fetch('mail.php', { method: 'POST', body: formData }); if (response.ok) { let result = await response.json(); alert(result.message); formPreview.innerHTML = ''; form.reset(); } else { alert("Ошибка") } }else{ alert ('Заполните обязательные поля') } } function formValidate(form) { 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'); } /* функция проверки емайл */ function emailTest(input) { return !/^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,8})+$/.test(input.value); } }); |
"use strict" document.addEventListener('DOMContentLoaded', function () { const form = document.getElementById('form'); form.addEventListener('submit', formSend); async function formSend(e) { e.preventDefault(); let error = formValidate(form); let formData = new FormData(form); if (error === 0) { let response = await fetch('mail.php', { method: 'POST', body: formData }); if (response.ok) { let result = await response.json(); alert(result.message); formPreview.innerHTML = ''; form.reset(); } else { alert("Ошибка") } }else{ alert ('Заполните обязательные поля') } } function formValidate(form) { 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'); } /* функция проверки емайл */ function emailTest(input) { return !/^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,8})+$/.test(input.value); } });
<?php use PHPMailerPHPMailerPHPMailer; use PHPMailerPHPMailerException; 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->setFrom('HPL'); $mail->addAddress('Andrey56.89@mail.ru'); $mail->Subject = 'У вас письмо!' $body = '<h1>Заявка!</h1>'; if(trim(!empty($_POST['name']))){ $body.='<p><strong>Имя:</strong> '.$_POST['name']. '</p>'; } if(trim(!empty($_POST['phone']))){ $body.='<p><strong>Телефон:</strong>' .$_POST['phone']. '</p>'; } if(trim(!empty($_POST['email']))){ $body.='<p><strong>email:</strong>' .$_POST['email']. '</p>'; } $mail->Body = $body; if (!$mail->send()) { $message = 'Ошибка' ; } else { $message = 'Данные отправлены!'; } $response = ['message' => $message]; header('Content-type: application/json'); echo json_encode($response); ?> |
<?php use PHPMailerPHPMailerPHPMailer; use PHPMailerPHPMailerException; 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->setFrom('HPL'); $mail->addAddress('Andrey56.89@mail.ru'); $mail->Subject = 'У вас письмо!' $body = '<h1>Заявка!</h1>'; if(trim(!empty($_POST['name']))){ $body.='<p><strong>Имя:</strong> '.$_POST['name']. '</p>'; } if(trim(!empty($_POST['phone']))){ $body.='<p><strong>Телефон:</strong>' .$_POST['phone']. '</p>'; } if(trim(!empty($_POST['email']))){ $body.='<p><strong>email:</strong>' .$_POST['email']. '</p>'; } $mail->Body = $body; if (!$mail->send()) { $message = 'Ошибка' ; } else { $message = 'Данные отправлены!'; } $response = ['message' => $message]; header('Content-type: application/json'); echo json_encode($response); ?>
ccылка
Ссылка удалена модератором.
Дополнительно:
Для начала оформите код...
"use strict" document.addEventListener('DOMContentLoaded', function () { const form = document.getElementById('form'); form.addEventListener('submit', formSend); async function formSend(e) { e.preventDefault(); let error = formValidate(form); let formData = new FormData(form); if (error === 0) { let response = await fetch('mail.php', { method: 'POST', body: formData }); if (response.ok) { let result = await response.json(); alert(result.message); formPreview.innerHTML = ''; form.reset(); } else { alert("Ошибка") } }else{ alert ('Заполните обязательные поля') } } function formValidate(form) { 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'); } /* функция проверки емайл */ function emailTest(input) { return !/^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,8})+$/.test(input.value); } }); |
"use strict" document.addEventListener('DOMContentLoaded', function () { const form = document.getElementById('form'); form.addEventListener('submit', formSend); async function formSend(e) { e.preventDefault(); let error = formValidate(form); let formData = new FormData(form); if (error === 0) { let response = await fetch('mail.php', { method: 'POST', body: formData }); if (response.ok) { let result = await response.json(); alert(result.message); formPreview.innerHTML = ''; form.reset(); } else { alert("Ошибка") } }else{ alert ('Заполните обязательные поля') } } function formValidate(form) { 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'); } /* функция проверки емайл */ function emailTest(input) { return !/^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,8})+$/.test(input.value); } });
<?php use PHPMailerPHPMailerPHPMailer; use PHPMailerPHPMailerException; 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->setFrom('HPL'); $mail->addAddress('Andrey56.89@mail.ru'); $mail->Subject = 'У вас письмо!' $body = '<h1>Заявка!</h1>'; if(trim(!empty($_POST['name']))){ $body.='<p><strong>Имя:</strong> '.$_POST['name']. '</p>'; } if(trim(!empty($_POST['phone']))){ $body.='<p><strong>Телефон:</strong>' .$_POST['phone']. '</p>'; } if(trim(!empty($_POST['email']))){ $body.='<p><strong>email:</strong>' .$_POST['email']. '</p>'; } $mail->Body = $body; if (!$mail->send()) { $message = 'Ошибка' ; } else { $message = 'Данные отправлены!'; } $response = ['message' => $message]; header('Content-type: application/json'); echo json_encode($response); ?> |
<?php use PHPMailerPHPMailerPHPMailer; use PHPMailerPHPMailerException; 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->setFrom('HPL'); $mail->addAddress('Andrey56.89@mail.ru'); $mail->Subject = 'У вас письмо!' $body = '<h1>Заявка!</h1>'; if(trim(!empty($_POST['name']))){ $body.='<p><strong>Имя:</strong> '.$_POST['name']. '</p>'; } if(trim(!empty($_POST['phone']))){ $body.='<p><strong>Телефон:</strong>' .$_POST['phone']. '</p>'; } if(trim(!empty($_POST['email']))){ $body.='<p><strong>email:</strong>' .$_POST['email']. '</p>'; } $mail->Body = $body; if (!$mail->send()) { $message = 'Ошибка' ; } else { $message = 'Данные отправлены!'; } $response = ['message' => $message]; header('Content-type: application/json'); echo json_encode($response); ?>
.... $mail->IsHTML(true); $mail->SMTPDebug = 2; $mail->Debugoutput = function($str, $level) { $GLOBALS['mail_debug'] .= "$level: $strn"; }; .... .... .... if (!$mail->send()) { $message = 'Ошибка' ; error_log($mail_debug); } |
.... $mail->IsHTML(true); $mail->SMTPDebug = 2; $mail->Debugoutput = function($str, $level) { $GLOBALS['mail_debug'] .= "$level: $strn"; }; .... .... .... if (!$mail->send()) { $message = 'Ошибка' ; error_log($mail_debug); }
Ответы:
1) Что пишет конслоль?
2) Запрос вообще выполняется? В нетворке виден запрос по субмиту на mail.php?
3) Что показывает нетворк в пэйлоаде запроса?
4) Что возвращает сервер на запрос?
- *Uncaught (in promise) SyntaxError: Unexpected token '<', "
"... is not valid JSON
это в консолиParse error: syntax error, unexpected variable "$body" in /var/www/u2142199/data/www/andreykrylov.ru/sendmail.php on line 26
это в sources
-
- Andr_ey56,
unexpected variable "$body" in /var/www/u2142199/data/www/andreykrylov.ru/sendmail.php on line 26
Читаем, переводим, понимаем, фиксим - профит.
- ThunderCat, ну вот, вдруг случилось, уже хоть что-то.
- Andr_ey56, Короче, не надеюсь на вашу внимательность и сообразительность,
$mail->Subject = 'У вас письмо!' //здесь пропущена точка с запятой в конце строки $body = '<h1>Заявка!</h1>';
$mail->Subject = 'У вас письмо!' //здесь пропущена точка с запятой в конце строки $body = '<h1>Заявка!</h1>';
Учитесь читать ошибки и хотя бы базовому синтаксису...
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


Для того чтобы определить причину, по которой форма не отправляется, необходимо провести несколько проверок и исследований. Вот несколько возможных причин и способы их устранения:
1. Проверьте правильность атрибутов формы:
- Убедитесь, что у формы есть атрибуты `action` и `method`. `action` должен указывать на URL обработчика формы, а `method` должен быть либо `GET`, либо `POST`.
- Проверьте, что у всех полей формы есть уникальные имена (`name`).
2. Проверьте наличие обязательных полей:
- Если некоторые поля формы обозначены как обязательные, убедитесь, что они заполнены.
3. Проверьте наличие JavaScript ошибок:
- Проверьте консоль браузера на наличие ошибок JavaScript. Ошибки JavaScript могут препятствовать отправке формы.
4. Проверьте настройки сервера:
- Убедитесь, что ваш сервер правильно настроен для обработки форм. Проверьте файлы конфигурации сервера (например, `.htaccess` для серверов Apache).
5. Проверьте файл обработчика формы:
- Убедитесь, что обработчик формы (например, PHP скрипт) корректно обрабатывает данные, переданные из формы. Проверьте, что нет ошибок в PHP коде.
6. Проверьте файлы CSS:
- Иногда стили CSS могут перекрывать элементы формы или приводить к их некорректному отображению. Убедитесь, что CSS не мешает отправке формы.
Если после выполнения всех этих шагов проблема не устранена, попробуйте использовать инструменты разработчика браузера для отслеживания сетевых запросов и проверки, действительно ли форма отправляется на сервер. Если форма отправляется на сервер, но данные не обрабатываются правильно, проблема может быть в обработке данных на стороне сервера.