Skip to content

Commit

Permalink
Пробелы-запятые
Browse files Browse the repository at this point in the history
  • Loading branch information
skorobaeus committed Sep 4, 2024
1 parent 31c35b0 commit 9c0bedd
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions recipes/progress/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ function errorHandler() {

<iframe title="Пример загрузки одного файла" src="demos/single-file/" height="330"></iframe>

Было бы удобно иметь возможность тестировать наше решение изолировано (без реализации кода серверной части).Для этого можно добавить функцию симуляции загрузки, предусмотрев вариант завершения загрузки в результате ошибки. Следующий пример демонстрирует этот подход.
Было бы удобно иметь возможность тестировать наше решение изолированно (без реализации кода серверной части). Для этого можно добавить функцию симуляции загрузки, предусмотрев вариант завершения загрузки в результате ошибки. Следующий пример демонстрирует этот подход.

<iframe title="Эмуляция загрузки файла" src="demos/emulation/" height="330"></iframe>

Expand Down Expand Up @@ -425,9 +425,10 @@ const statusText = form.querySelector('.form-upload__status')
const progressBar = form.querySelector('#progressBar')
```

Приступим к определению служебных функций. Вызов этих функций будет осуществляться с помощью обработчиков событий. Такое разделение логики, позволяет легче ориентироваться в кодовой базе, избегать дублирования кода и упрощает дальнейшие модификации.
Приступим к определению служебных функций. Вызов этих функций будет осуществляться с помощью обработчиков событий. Такое разделение логики позволяет легче ориентироваться в кодовой базе, избегать дублирования кода, и упрощает дальнейшие модификации.

Создадим функцию сброса состояния загрузки, это понадобится для очистки информации о предыдущих загрузках:

```js
function resetProgress(status = '') {
statusText.textContent = status
Expand All @@ -436,7 +437,7 @@ function resetProgress(status = '') {
}
```

Рассмотрим функцию отправки данных. Параметром функции является выбранный для отправки файл. Чтобы отправить файл на сервер без перезагрузки страницы, воспользуемся `XMLHttpRequest` — набором механизмов для обмена данными между клиентом и сервером без перезагрузки. Более подробно о нём можно почитать на [странице документации MDN](https://developer.mozilla.org/ru/docs/Web/API/XMLHttpRequest).
Рассмотрим функцию отправки данных. Параметром функции является выбранный для отправки файл. Чтобы отправить файл на сервер без перезагрузки страницы, воспользуемся `XMLHttpRequest` — набором механизмов для обмена данными между клиентом и сервером. Более подробно о нём можно почитать на [странице документации MDN](https://developer.mozilla.org/ru/docs/Web/API/XMLHttpRequest).

Инициализируем необходимые объекты:
- `formSent` - объект `FormData`, в котором будут храниться данные для отправки;
Expand All @@ -451,7 +452,7 @@ const xhr = new XMLHttpRequest()
После этого устанавливаем параметры `XMLHttpRequest`:
- для `XMLHttpRequestUpload` добавляется обработчик события `progress`, который выполняет отслеживание состояния загрузки файла;
- для `XMLHttpRequest` добавляются обработчики событий `load` и `error` позволяющие отслеживать результат загрузки;
- метод `open()` инициализирует POST-запрос к управляющему файлу, который хранится на сервере;
- метод `open()` инициализирует POST-запрос к управляющему файлу, который хранится на сервере.

Отправка данных выполняется с помощью метода `send()`.

Expand Down Expand Up @@ -501,6 +502,7 @@ fileInput.addEventListener('change', function () {
```

После нажатия кнопки «Загрузить файл» происходит событие `submit`. В обработчике этого события мы проверяем что файл выбран и вызываем функцию `upload()`, отвечающую за отправку данных на сервер. На время выполнения запроса блокируем возможность выбора и отправки нового файла. Если файл не выбран, оповещаем об этом пользователя:

```js
form.addEventListener('submit', function (event) {
event.preventDefault()
Expand All @@ -519,7 +521,7 @@ form.addEventListener('submit', function (event) {
})
```

Выполнение запроса может завершиться как успешно так и в результате ошибки. С помощью обработчиков `loadHandler()` и `errorHandler()` определяем какую информацию о результате загрузки необходимо отобразить. После завершения загрузки разблокируем возможность отправки файлов:
Выполнение запроса может завершиться как успешно, так и ошибкой. С помощью обработчиков `loadHandler()` и `errorHandler()` определяем какую информацию о результате загрузки необходимо отобразить. После завершения загрузки разблокируем возможность отправки файлов:

```js
function loadHandler(event) {
Expand Down

0 comments on commit 9c0bedd

Please sign in to comment.