-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
134 lines (112 loc) · 5.02 KB
/
Copy pathmain.js
File metadata and controls
134 lines (112 loc) · 5.02 KB
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//-----ПРИМЕР ИСПОЛЬЗОВАНИЯ XHR С КОЛЛБЕКОМ----------------------
/*let ajax = function(method, url, callback){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (xhr.readyState === 4 && xhr.status === 200) {
//console.log(xhr);
callback(xhr.responseText);
}
}
xhr.open(method, url, callback);
xhr.send(null);
}
let request = function(){
ajax('GET', '/site/tryCurrency', response.bind(this));
}
response = function(arr){
try {
var arrAnswer = JSON.parse(arr); // парсим пришедший с сервера ответ
console.log(arrAnswer);
} catch (e) {
console.log(e);
return;
}
//дальше работаем с arrAnswer
}*/
//-----Сделать GET запрос на сервер и отобразить вернувшуюся информацию-------
// РЕЗУЛЬТАТ ЗАПРОСА ЗАПШИТЕ В тэг <p> в HTML
const btn = document.querySelector('button');
const btnAddUser = document.querySelector('#add');
const urlForRequest = `http://easycode-js.herokuapp.com/pnv/users`;
//------------------------------------------------
const serverGETRequest = (url, callback) => {
const xhr = new XMLHttpRequest(); // 1 - сначала создаем экземпляр запроса
xhr.onreadystatechange = () => { // 4 - по onreadystatechange выполняем нужные действия
if (xhr.readyState === 4 && xhr.status === 200) {
//if (xhr.readyState === XMLHttpRequest.DONE) { // или можно так проверять
callback(xhr.responseText); // и вызываем коллбек, в который передаем ответ от сервера
}
};
xhr.open('GET', url, true); // 2 - открываем соединение
xhr.send(null); // 3 - отправляем запрос
}
//------------------------------------------------
const serverPOSTRequest = (url, data, callback) => {
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = () => {
if (xhr.readyState === 4 && xhr.status === 200) {
//console.log(xhr.responseText); //в методе POST тут возвращается тот юзер, которого мы записали в базу
if (callback) {
callback(xhr.responseText);
}
}
};
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-type', 'application/json'); // устанавливаем заголовки -
// хотим отдать серверу JSON
xhr.send(data);// превращаем в JSON и передаем на сервер
}
//-----------------------------------------------------
const getUsersFromDB = (response) => {
try {
response;
} catch(e) {
console.log(e);
return;
}
let parent = document.querySelector('p');
//let answer = JSON.parse(response); //парсим ответ, если нужно, и потом с ним дальше работаем
parent.insertAdjacentHTML('beforeEnd', response);
}
//----------------------------------------------------
const createUser = (name, email) => {
let user;
if (name && email) {
user = {
fullName: name,
email: email
}
} else {
user = {
fullName: 'Sveta Sidorenko',
email: 'svet@ukr.net'
}
}
console.log(user);
console.log(JSON.stringify(user));
return JSON.stringify(user);
}
//-----------------------------------------------------
btn.addEventListener('click', () => { // по клику на кнопку отправляем запрос
serverGETRequest(urlForRequest, getUsersFromDB); // и передаем url, на который слать запрос
})
btnAddUser.addEventListener('click', (name, email) => {
serverPOSTRequest(urlForRequest, createUser(name, email));
})
//---------------ФОРМЫ--------------------------------------
const myForms = document.forms; //получаем все формы с документа, псевдомассив
//const [myForms] = document.forms // или так - сразу делаем из псевдомассива массив
const myForm = document.forms[0]; //обращаемся к первой форме в документе
//myForm.elements // - обращение ко всем элементам формы
myForm.addEventListener('submit', (event) => { // вешаем собыие сразу на всю форму
event.preventDefault(); // чтобы не сразу отправлялись данные, а после необходимых нам проверок
const {email, fullName} = myForm.elements; // email, fullName - атрибуты name у элементов формы
// здесь обратились только к инпутам с name="email" и name="fullName"
if (!email.value) { // если в поле email нет значения
alert('заполните email');
};
if (!fullName.value) { // если в поле fullName нет значения
alert('заполните fullName');
};
serverPOSTRequest(urlForRequest, createUser(fullName.value, email.value));
});