@TipTop89

Как получить ответ от файла(например 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}`);
    }
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 2
anatoly_kulikov
@anatoly_kulikov
Помог ответ? Отметь решением!
Гуглите Ajax (fetch) и REST API, там ответы =)

Если вкратце, то вам нужно через js отправить запрос, который php по данному адресу примет, обработает и вернет результат (очень часто используется ответ в формате json, но не обязательно).
Ответ написан
Комментировать
sharp97
@sharp97
не фонтан но брызги есть
По какому-то событию , например нажатие onclick на кнопку отправки выполнять fetch post запрос в main php где в echo должен быть какой-то ответ выполнения всего файла, далее на фронте на js сформировать response то есть ответ сервера и уже от ответа выполнять какие-либо нужные под вашу задачу действия
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы