-
Notifications
You must be signed in to change notification settings - Fork 0
/
AJAX.js
47 lines (46 loc) · 2.52 KB
/
AJAX.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//кнопка добавления пользователей method GET
const getUsersBtn = document.querySelector(".get-users-btn");
//кнопка добавления пользователя после положительного ответа сервера
const addUsersBtn = document.querySelector(".btn-addUser");
//контейнер для пользователей
const container = document.querySelector(".users-container");
//адрес с которого берём юзеров
const requestURL = "https://jsonplaceholder.typicode.com/users";
//функция для всплывающих окон
function initPopovers() {
const popoverTriggerList = document.querySelectorAll(
'[data-bs-toggle="popover"]'
);
const popoverList = [...popoverTriggerList].map(
(popoverTriggerEl) => new bootstrap.Popover(popoverTriggerEl)
);
}
//функция sendRequest она же послатьЗапрос или иначе getUsers - получить юзеров;
//аргументы колбек(наш renderUsers), метод(GET), url(адрес, requestURL)
function sendRequest(callback, method, url) {
//вернуть новый промис
return new Promise((resolve, reject) => {
// создать новый xhr
const request = new XMLHttpRequest();
// получить url методом GET
request.open(method, url);
// request.setRequestHeader("Content-Type", "application/json");
// вешаем обработчик событий "при загрузке"
request.addEventListener("load", () => {
// где парсим request в json в переменную response
const response = JSON.parse(request.responseText);
// и делаем проверку статуса ответа от сервера при load-загрузке
// если статус request 400 и более (что значит неудачно) отклоняем вызов request c помощью reject
// в другом случае (если успешно) одобряем вызов вызов request c помощью resolve
if (request.status >= 400) {
reject(request.response);
} else {
resolve(request.response);
}
// передаём в callback он же renderUsers(response) наш response
callback(response);
});
// send в конце обязательно не забываем. Принять данные с помощью get мало, нужно их ещё потом и send
request.send();
});
}