Есть два встроенных метода, которые вы можете использовать вместо использования таких фреймворков, как ax ios, jQuery Ajax, ...
Fetch:
Использование Fetch API действительно просто. Просто передайте URL, путь к ресурсу, который вы хотите получить, методу fetch ().
простой метод GET:
//simple GET method
fetch('/js/users.json')
.then(response => {
// handle response data
})
.catch(err => {
// handle errors
});
другие методы, такие как POST
, DELETE
, ...:
// some data to post
const user = {
first_name: 'John',
last_name: 'Lilly',
job_title: 'Software Engineer'
};
// options of fetch
const options = {
method: 'POST',
body: JSON.stringify(user),
headers: {
'Content-Type': 'application/json'
}
}
fetch('https://reqres.in/api/users', options)
.then(response => {
// handle response data
})
.catch(err => {
// handle errors
});
XML HttpRequest:
XMLHttpRequest
- это встроенный объект браузера, который позволяет выполнять HTTP-запросы в JavaScript.
Создать XMLHttpRequest:
let xhr = new XMLHttpRequest();
Инициализировать его, обычно сразу после нового XMLHttpRequest:
xhr.open(method, URL, [async, user, password])
method
- HTTP-метод. Обычно "GET"
или "POST"
. URL
- URL-адрес для запроса, строка, может быть объектом URL. async
- если явно установлено значение false
, тогда запрос синхронный, мы рассмотрим его чуть позже. user
, password
- логин и пароль для базового c HTTP-аутентификации (если требуется).
Отправьте его.
xhr.send([body])
Этот метод открывает соединение и отправляет запрос на сервер. Необязательный параметр body содержит тело запроса.
Некоторые методы запроса, такие как GET, не имеют тела. И некоторые из них, такие как POST, используют тело для отправки данных на сервер. Мы увидим примеры этого позже.
Прослушивание событий xhr для ответа.
Эти три события наиболее широко используются:
load
- когда запрос завершен (даже если статус HTTP равен 400 или 500), а ответ полностью загружен.
error
- когда запрос не может быть выполнен, например, не работает сеть или недействительный URL.
progress
- периодически срабатывает во время загрузки ответа, сообщает, сколько было загружено.
xhr.onload = function() {
alert(`Loaded: ${xhr.status} ${xhr.response}`);
};
xhr.onerror = function() { // only triggers if the request couldn't be
made at all
alert(`Network Error`);
};
xhr.onprogress = function(event) { // triggers periodically
// event.loaded - how many bytes downloaded
// event.lengthComputable = true if the server sent Content-Length
// header
// event.total - total number of bytes (if lengthComputable)
alert(`Received ${event.loaded} of ${event.total}`);
};