# ajax-minify

> Небольшой модуль для облегчения работы с ajax запросами на стороне клиента. Модуль использует файловый импорт и экспорт, поэтому для его успешного и комфортного использования необходим сборщик модулей, например webpack.

Latest version **1.0.4** (published 2020-04-01) · ISC license · 0 weekly downloads

## Install

```sh
npm install ajax-minify
pnpm add ajax-minify
yarn add ajax-minify
bun add ajax-minify
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2020-04-01 |
| First published | 2020-01-26 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 24.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | 6y6eH4uk |
| Maintainers | 6y6eh4uk |
| Keywords | ajax, fetch, xmlhttprequest |

## Links

- npm: https://www.npmjs.com/package/ajax-minify
- Repository: https://github.com/6y6eH4uk/ajax-minify
- Homepage: https://github.com/6y6eH4uk/ajax-minify#readme
- Issues: https://github.com/6y6eH4uk/ajax-minify/issues
- npm.io page: https://npm.io/package/ajax-minify

## Alternatives

- [launchdarkly-js-client-sdk](https://npm.io/package/launchdarkly-js-client-sdk.md) — 2.5M weekly downloads
- [@elastic/elasticsearch](https://npm.io/package/@elastic/elasticsearch.md) — 2.1M weekly downloads
- [@c8y/client](https://npm.io/package/@c8y/client.md) — 15.3K weekly downloads
- [@signaldb/maverickjs](https://npm.io/package/@signaldb/maverickjs.md) — 1.7K weekly downloads
- [@bbc/http-transport-cache](https://npm.io/package/@bbc/http-transport-cache.md) — 1.2K weekly downloads

## Recent versions

- 1.0.4 (latest) — 2020-04-01
- 1.0.3 — 2020-03-27
- 1.0.2 — 2020-03-27
- 1.0.1 — 2020-02-27
- 1.0.0 — 2020-01-26

## README

# ajax-minify

Небольшой модуль для облегчения работы с ajax запросами на стороне клиента. Модуль использует файловый импорт и экспорт, поэтому для его успешного и комфортного использования необходим сборщик модулей, например webpack.

Пример использования

```javascript
    import Ajax from 'ajax-minify';

    Ajax.get('/query', (res) => {
        console.log(res.text());
    });

    // Console:
    // Вы попали на страницу /query
```

***

# Список функций

  - [get](#get)
  - [post](#post)
  - [query](#query)


#### get

Отправляет по указанному адресу запрос с методом *GET*

Список аргументов:

  - **url <string>** **обязательный*
  - **success <function>** **обязательный* - будет вызвана в случае успешного завершения запроса. В качестве параметра будет передан объект [HttpSuccess](#httpsuccess)
  - **error <function>** - будет вызвана в случае ошибки или тайм-аута. В качестве параметра будет передан объект [HttpError](#httperror)


```javascript
    Ajax.get('/query', (res) => {
        console.log(res.json());
    }, (error) => {
        console.log(error.type);
    });
```

#### post

Отправляет по указанному адресу запрос с методом *POST*. Если вам необходимо вместе с данными отправить на сервер и специфичные заголовки, то рекомендуется использовать метод [query](#query), так как к **post** нельзя прикрепить заголовки.

Список аргументов:

  - **url <string>** **обязательный*
  - **data <string | object | Blob | ReadableStream | FormData | ArrayBuffer | TypedArray>** - данные, которые будут отправлены на сервер в теле запроса. Если передан чистый объект, который не является экземпляром перечисленных выше классов, то он будет сериализован в json, который затем будет отправлен на сервер (заголовок также будет выставлен автоматически). Поведение с остальными типами будет стандартным, в соответствии со встроенной функциональностью браузера.
  - **success <function>** **обязательный* - будет вызвана в случае успешного завершения запроса. В качестве параметра будет передан объект [HttpSuccess](#httpsuccess)
  - **error <function>** - будет вызвана в случае ошибки или тайм-аута. В качестве параметра будет передан объект [HttpError](#httperror)

```javascript
    const data = {
        type: "message",
        body: "Hello"
    };

    Ajax.post('/query', data, (res) => {
        console.log(res.text());
    }, (error) => {
        console.log(error.type);
    });
```

#### query

Более гибкий метод для отправки ajax запросов, который принимает в качестве параметра объект со следующими свойствами:

  - **url <string>** **обязательный*
  - **method <string>** **обязательный* - метод http запроса. (следует следить за тем, чтобы не использовать параметр **data** вместе с методами запроса у которых не может быть тела)
  - **data <string | object | Blob | ReadableStream | FormData | ArrayBuffer | TypedArray>** - данные, которые будут отправлены на сервер в теле запроса. Если передан чистый объект, который не является экземпляром перечисленных выше классов, то он будет сериализован в json, который затем будет отправлен на сервер (заголовок также будет выставлен автоматически). Поведение с остальными типами будет стандартным, в соответствии со встроенной функциональностью браузера.
  - **success <function>** **обязательный* - будет вызвана в случае успешного завершения запроса. В качестве параметра будет передан объект [HttpSuccess](#httpsuccess)
  - **error <function>** - будет вызвана в случае ошибки или тайм-аута. В качестве параметра будет передан объект [HttpError](#httperror)
  - **loadstart <function>** - будет вызвана прямо перед отправкой данных на сервер. Никаких параметров не передается.
  - **loadend <function>** - будет вызвана в конце обработки запроса, причем не важно завершился ли запрос успешно, с ошибкой или истек timeout. Никаких параметров не передается. Вызывается самым последним.
  - **progress <function>** - будет периодически вызываться по мере загрузки ответа с сервера. Количество вызовов зависит от размера получаемых данных. В качестве параметра будет передан объект [HttpProgress](#httpprogress), с помощью которого можно отслеживать процесс загрузки.
  - **headers <array>** - http заголовки, которые должны быть отправлены на сервер. Точный синтаксис смотрите в примере кода.

```javascript
    Ajax.query({
        url: '/query',
        method: 'post',
        data: {
            message: 'Hello, Server'
        },
        headers: [
            ['Content-Type', 'text/plain']
        ],
        loadstart: () => {
            console.log('Start query');
        },
        loadend: () => {
            console.log('End query');
        },
        success: (res) => {
            console.log(res.text());
        },
        error: (error) => {
            console.log(`Error ${error.type} at ${error.url}`);
        },
        progress: (info) => {
            console.log(`Loaded: ${info.loaded} Total: ${info.total}`);
        }
    });
```

***

# Объекты из параметров

  - [HttpSuccess](#httpsuccess)
  - [HttpError](#httperror)
  - [HttpProgress](#httpprogress)

#### HttpSuccess

Передается в качестве параметра в функцию success. Список свойств:
  - **text()** - возвращает тело ответа в виде строки
  - **json()** - возвращает объект, если в теле запроса находится корректный json, иначе возвращает false
  - **status** - числовой статус ответа.
  - **statusText** - весь текст статуса ответа. Например: *200 OK*.
  - **responseURL** - url адрес ответа.
  - **loaded** - количество загруженных байт
  - **timeStamp** - прошедшее время
  - **headers** - список заголовков, которые пришли с сервера в виде объекта
  - **headersText** - необработанная строка с заголовками ответа
  - **getHeader(header)** - возвращает значение указанного заголовка

### HttpError

Передается в качестве параметра в функцию **error**. Список параметров:

  - type - тип ошибки
  - url - url адрес, который был передан для запроса

### HttpProgress

Передается в качестве параметра в функцию **progress**. Список параметров:

  - **loaded** - количество загруженных байт
  - **total** - общее количество байт
  - **timeStamp** - прошедшее время
  - **status** - числовой статус ответа.
  - **statusText** - весь текст статуса ответа. Например: *200 OK*.
  - **responseURL** - url адрес ответа.
  - **headers** - список заголовков, которые пришли с сервера в виде объекта
  - **headersText** - необработанная строка с заголовками ответа
  - **getHeader(header)** - возвращает значение указанного заголовка

---
_Source: https://npm.io/package/ajax-minify · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
