Как получить ответ от файла(например main.php) в форме?
Как отправить данные с формы в файл /main.php и если я напечатаю что-нибудь в файле /main.php - принималось в js и выводилось в консоль? Спасибо, заранее извиняюсь за глупый вопрос, некогда такое не делал и в гугле не нашел нечего(возможно плохо искал или не понял)
const forms = document.forms; if (forms.length) { for (const form of forms) { form.addEventListener('submit', function (e) { const form = e.target; formSubmitAction(form, e); }); form.addEventListener('reset', function (e) { const form = e.target; formValidate.formClean(form); }); } } async function formSubmitAction(form, e) { const error = !form.hasAttribute('data-no-validate') ? formValidate.getErrors(form) : 0; if (error === 0) { const ajax = form.hasAttribute('data-ajax'); if (ajax) { // Если режим ajax e.preventDefault(); const formAction = form.getAttribute('action') ? form.getAttribute('action').trim() : '#'; const formMethod = form.getAttribute('method') ? form.getAttribute('method').trim() : 'GET'; const formData = new FormData(form); form.classList.add('_sending'); const response = await fetch(formAction, { method: formMethod, body: formData }); if (response.ok) { let responseResult = await response.json(); form.classList.remove('_sending'); formSent(form, responseResult); } else { alert("Ошибка"); form.classList.remove('_sending'); } } } else { e.preventDefault(); const formError = form.querySelector('._form-error'); if (formError && form.hasAttribute('data-goto-error')) { gotoBlock(formError, true, 1000); } } } // Действия после отправки формы function formSent(form, responseResult = ``) { // Создаем событие отправки формы document.dispatchEvent(new CustomEvent("formSent", { detail: { form: form } })); setTimeout(() => { if (flsModules.popup) { const formBtnForm = form.dataset.popupMessage; form.parentElement.classList.add("_active-application") const formBtnCalculatorPriceForm = form.dataset.popupMessage; form.parentElement.classList.add("_active-calculator") const formBtnCalculatorFormForm = form.dataset.popupMessage; form.parentElement.classList.add("_active-form") } }, 0); // Показываем попап, если подключен модуль попапов // и для формы указана настройка setTimeout(() => { if (flsModules.popup) { const popup = form.dataset.popupMessage; popup ? flsModules.popup.open(popup) : null; } }, 0); // Очищаем форму formValidate.formClean(form); // Сообщаем в консоль formLogging(`Форма отправлена!`); } function formLogging(message) { FLS(`[Формы]: ${message}`); } |
const forms = document.forms; if (forms.length) { for (const form of forms) { form.addEventListener('submit', function (e) { const form = e.target; formSubmitAction(form, e); }); form.addEventListener('reset', function (e) { const form = e.target; formValidate.formClean(form); }); } } async function formSubmitAction(form, e) { const error = !form.hasAttribute('data-no-validate') ? formValidate.getErrors(form) : 0; if (error === 0) { const ajax = form.hasAttribute('data-ajax'); if (ajax) { // Если режим ajax e.preventDefault(); const formAction = form.getAttribute('action') ? form.getAttribute('action').trim() : '#'; const formMethod = form.getAttribute('method') ? form.getAttribute('method').trim() : 'GET'; const formData = new FormData(form); form.classList.add('_sending'); const response = await fetch(formAction, { method: formMethod, body: formData }); if (response.ok) { let responseResult = await response.json(); form.classList.remove('_sending'); formSent(form, responseResult); } else { alert("Ошибка"); form.classList.remove('_sending'); } } } else { e.preventDefault(); const formError = form.querySelector('._form-error'); if (formError && form.hasAttribute('data-goto-error')) { gotoBlock(formError, true, 1000); } } } // Действия после отправки формы function formSent(form, responseResult = ``) { // Создаем событие отправки формы document.dispatchEvent(new CustomEvent("formSent", { detail: { form: form } })); setTimeout(() => { if (flsModules.popup) { const formBtnForm = form.dataset.popupMessage; form.parentElement.classList.add("_active-application") const formBtnCalculatorPriceForm = form.dataset.popupMessage; form.parentElement.classList.add("_active-calculator") const formBtnCalculatorFormForm = form.dataset.popupMessage; form.parentElement.classList.add("_active-form") } }, 0); // Показываем попап, если подключен модуль попапов // и для формы указана настройка setTimeout(() => { if (flsModules.popup) { const popup = form.dataset.popupMessage; popup ? flsModules.popup.open(popup) : null; } }, 0); // Очищаем форму formValidate.formClean(form); // Сообщаем в консоль formLogging(`Форма отправлена!`); } function formLogging(message) { FLS(`[Формы]: ${message}`); }
Дополнительно:
самое банальное - гет запрос
Ответы:
Гуглите Ajax (fetch) и REST API, там ответы =)
Если вкратце, то вам нужно через js отправить запрос, который php по данному адресу примет, обработает и вернет результат (очень часто используется ответ в формате json, но не обязательно).
По какому-то событию , например нажатие onclick на кнопку отправки выполнять fetch post запрос в main php где в echo должен быть какой-то ответ выполнения всего файла, далее на фронте на js сформировать response то есть ответ сервера и уже от ответа выполнять какие-либо нужные под вашу задачу действия
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы получить ответ от файла main.php в форме, вам необходимо отправить запрос на этот файл и обработать полученный ответ. Вот пример того, как это можно сделать с использованием языка программирования PHP:
// Создаем переменные с данными для отправки $data = array('name' => 'John', 'email' => 'john@example.com'); // Инициализируем cURL сеанс $ch = curl_init(); // Устанавливаем опции для cURL сеанса curl_setopt($ch, CURLOPT_URL, 'http://example.com/main.php'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Выполняем запрос к файлу main.php $response = curl_exec($ch); // Закрываем cURL сеанс curl_close($ch); // Выводим полученный ответ echo $response;
В данном примере мы создаем массив данных для отправки, инициализируем cURL сеанс, устанавливаем опции для этого сеанса (URL, метод POST, данные для отправки, включаем возврат результата в виде строки), выполняем запрос к файлу main.php, получаем ответ и выводим его на экран.
Пожалуйста, помните о том, что перед использованием данного кода важно удостовериться, что у вас есть права на доступ к файлу main.php и что он корректно обрабатывает данные, отправляемые ему через POST запрос.