Я хочу отправить большие файлы и сообщить о статусе загрузки. Это должно быть легко, и на этом сайте есть много ответов, демонстрирующих это. Но по некоторым причинам это не работает для меня, ни в Firefox, ни в Chrome.
У меня есть форма с файлами (определенная как <form id="form" method="post" enctype="multipart/form-data">
), которую я публикую с помощью этого кода:
function post() {
const request = new XMLHttpRequest();
request.upload.addEventListener("progress", (e) => {
console.log("progress: " + e.loaded + "/" + e.total);
});
request.open("post", formElement.action);
request.responseType = "json";
console.log("Start sending");
request.send(new FormData(document.getElementById('form');));
}
Но в ту минуту, когда я нажимаю кнопку, которая активирует эту функцию, браузер перестает отвечать до тех пор, пока не будет выполнена вся операция, а затем просто отображает ответ json.
Консоль непоказать любое сообщение (даже не «начать отправку», не говоря уже о прогрессе), и когда я проверяю страницу после отправки запроса на публикацию, оно показывает, что на нем вообще нет JS или DOM. то есть страница показывается, но не проверяется и не является интерактивной.
Что я делаю не так?