Не работает XMLHttpRequest.upload.onprogress при POST запосах
Привет всем! Хочу прикрутить "прогресс бар" на загрузку файлов, но он не работает при POST запросах. Подскажите почему такое может быть?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method='POST' name="upload" enctype="multipart/form-data"> <input type="file" name="myfile"> <input type="submit" value="Загрузить"> </form> <div id="log">Прогресс загрузки</div><br> <script> function log(html) { document.getElementById('log').innerHTML = html; } document.forms.upload.onsubmit = function() { var file = this.elements.myfile.files[0]; if (file) { upload(file); } return false; } function upload(file) { var xhr = new XMLHttpRequest(); // обработчики можно объединить в один, // если status == 200, то это успех, иначе ошибка xhr.onload = xhr.onerror = function() { if (this.status == 200) { log("success"); } else { log("error " + this.status); } }; // обработчик для закачки xhr.upload.onloadend = function () { document.getElementById('showany').innerHTML = "Загружено" } xhr.upload.onprogress = function(event) { log(event.loaded + ' / ' + event.total); } var formData = new FormData(Document.forms.upload); xhr.send(formData); } </script> </body> </html> |
Serduko, Document
|
Вложений: 1
Пробовал и так. Почему тогда GET запросы показывает? Файлы закачиваются, кстати, без проблем.
|
Serduko, не понял что ты пробовал, но пробовал ты что-то явно судя по картинке, и при чем здесь GET, но я имел ввиду что Document пишется с маленькой буквы, смотри строку 54 и исправь ее и больше ничего не пробуй... и файлы естественно закачиваются естественным образом с перезагрузкой так как скрипт выкидывает ошибку на этой строке до предотвращения естественного образа...
|
Ага, понял, спасибо. Исправил, но в целом не помогло. По прежнему, видимо, перегружается вся страница.
|
Цитата:
|
Убирал за "ненадобностью", с ним все также было. Спасибо.
Попробовал вот так, сработало: var formData = new FormData(); formData.append("myfile", file); xhr.open("POST", "", true); xhr.send(formData); Интересно почему так: new FormData(document.forms.upload);не хотел? |
Serduko, потому что правишь код бездумно методом тыка
|
Нет, не так, охватываю больший объем, чем следует, иногда игнорируя детальное рассмотрение частей, тем самым делая ошибки. Хотя можно и проще сказать, начал "шаманить".
Вопрос был по классу объекта и принимаемым экземплярам в конструкторе. Ладно, сам разберусь, и на том спасибо. |
Цитата:
ладно смотри как очевидные вещи делаются вам шаманам не понять var formData = new FormData(document.forms.upload); xhr.open("POST", "", true); xhr.send(formData); |
Часовой пояс GMT +3, время: 15:18. |