1
1
let message = {
        loading: 'Загрузка...',
        success: 'Спасибо! Скоро мы с вами свяжемся!',
        failure: 'Что-то пошло не так...'
    };

    let form = document.querySelector('.main-form'),
        input = form.getElementsByTagName('input'),
        statusMessage = document.createElement('div');

        statusMessage.classList.add('status');

    form.addEventListener('submit', function(event) {
        event.preventDefault();
        form.appendChild(statusMessage);

        let request = new XMLHttpRequest();
        request.open('POST', 'server.php');
        request.setRequestHeader('Content-type', 'application/json; charset=utf-8');

        let formData = new FormData(form);

        let obj = {};
        formData.forEach(function(value, key) {
            obj[key] = value;
        });
        let json = JSON.stringify(obj);

        request.send(json);

        request.addEventListener('readystatechange', function() {
            if (request.readyState < 4) {
                statusMessage.innerHTML = message.loading;
            } else if(request.readyState === 4 && request.status == 200) {
                statusMessage.innerHTML = message.success;
            } else {
                statusMessage.innerHTML = message.failure;
            }
        });

        for (let i = 0; i < input.length; i++) {
            input[i].value = '';
        }
    });

Никита Черемухин
4 years ago






Если вы запускаете сайт через Live Server в VS Code, то можете отправить только GET запрос. Об этом говорится на первых минутах видео. Чтобы отправить POST запрос - нужно установить локальный сервер, например, XAMPP. Перенести на него папку с файлами сайта, запустить сервер и все заработает. Инструкция по установке в курсе PHP / MySQL. 

Aleksei Kurianov
3 years ago

Попробуйте заменить часть кода, должно получиться

request.addEventListener('readystatechange', function() {
            if (request.readyState < 4) {
                statusMessage.innerHTML = message.loading;
            } else if (request.readyState === 4) {
                if (request.status == 200 && request.status < 300) {
                    statusMessage.innerHTML = message.success;
                } else {
                statusMessage.innerHTML = message.success;
                }
            }
        });

Но вообще, этот вариант неправильный.
Оригинальный код работает, если загрузить файлы на свой хостинг

Александр Плыгун
3 years ago

Кому-то отвечали? 

Andrey Pavlikhin
4 years ago

"Если вы запускаете сайт через Live Server в VS Code, то можете отправить только GET запрос. Об этом говорится на первых минутах видео. Чтобы отправить POST запрос - нужно установить локальный сервер, например, XAMPP. Перенести на него папку с файлами сайта, запустить сервер и все заработает. Инструкция по установке в курсе PHP / MySQL. " Иван это конечно упомянул, но не сказал как установить локальный сервер и даже ссылку не дал.

tanyaindahouse
3 years ago

Прошло 5 месяцев, проблема не решена. Иван, ау...

Евгения Малюшкина
3 years ago

Здравствуйте,смогли решить проблему?

Ислам
4 years ago

Добрый день. А не могли бы вы показать саму ошибку?

Иван Петриченко
4 years ago

Здравствуйте, код ошибки 405 Method Not Allowed

Никита Черемухин
4 years ago

8 ответов