Создайте загрузку Spinner перед отправкой запроса Javascript XMLHttpRequest

Я использую ванильный класс javascript, который отправляет запрос на другую страницу. Я хочу, чтобы загрузчик загружался в браузер для ожидания завершения запроса на отправку.

Ниже приведен мой код, который вызывает счетчик загрузки перед созданием экземпляра XMLHttpRequest. И удалите счетчик загрузки после завершения загрузки XMLHttpRequest.

ошибки нет, но я не вижу счетчика загрузки в своем браузере... Можете ли вы сказать мне, что мне не хватает?

class BYEPC_HTTPRequest {
    constructor(uri, params) {
        this.uri = uri;
        this.params = params;
        this.response;
        this.loadingSpinner(); // I added loadingSpinner to document before XMLHttpRequest.
        this.callQueryPage();
    }

    loadingSpinner() {
        document.body.insertAdjacentHTML('beforeend', 
            `
            <style>
            .loader {
                border: 16px solid #f3f3f3;
                border-radius: 50%;
                border-top: 16px solid #3498db;
                animation: spin 2s linear infinite;
                z-Index: 100000;
                position: fixed;
                display: block;
                boxShadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);                    
                width: 70px;
                height: 70px;
                top: 50%;
                left: 50%;
                top: 40%;
                left: 40%;
                transform: translate(-50%, -50%);
                msTransform: translate(-50%, -50%);
                webkitTransform: translate(-50%, -50%);
            }
            @keyframes spin {
                0% { transform: rotate(0deg); }
                100% { transform: rotate(360deg); }
            }
            </style>
            <div id = "loader" class = "loader"></div>
            `            
        );
    }

    callQueryPage() {        
          
        var httpRequest = new XMLHttpRequest();

        httpRequest.onloadend = function(e) {
            document.getElementById('loader').remove();
        };

        let _this = this;
        httpRequest.onreadystatechange = function(){           
            if (httpRequest.readyState === XMLHttpRequest.DONE) 
            {                
                if (httpRequest.status === 200) 
                {                                                          
                    _this.response = httpRequest.responseText;
                } 
                else 
                {                    
                    alert("status : " + httpRequest.status);                    
                }                
            }             
        }

        httpRequest.open("POST", this.uri, false);          
       
        httpRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        
        httpRequest.send(this.params);
    }         

    sleep(delay) {       
        const delayUntil = Date.now() + delay;

        while(Date.now() < delayUntil);
    }
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
104
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вам нужно привязать событие «прогресс» к XMLHttpRequest, и там вы должны добавить счетчик.

для получения более подробной информации см. https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#types_of_requests

Я сделал это раньше. Похоже, что когда запрос на отправку синхронизируется, javascript останавливается.

seongmincho 07.11.2022 01:19

Можете ли вы предоставить рабочий код в панели кода или где-то еще?

yograj tandel 08.11.2022 04:34

Другие вопросы по теме