@@ -0,0 +1,6 @@ | |||
{ | |||
"trailingComma": "es5", | |||
"tabWidth": 4, | |||
"semi": true, | |||
"singleQuote": true | |||
} |
@@ -0,0 +1,18 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||
<meta http-equiv="X-UA-Compatible" content="ie=edge" /> | |||
<title>13-xmlhttprequest</title> | |||
<link rel="stylesheet" href="styles/main.css" /> | |||
</head> | |||
<body> | |||
<div> | |||
<button id="get-endpoints-btn">Get endpoints</button> | |||
</div> | |||
<div id="endpoint-container"></div> | |||
<script src="scripts/main.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,56 @@ | |||
const endpointContainer = document.getElementById('endpoint-container'); | |||
const getEndpointsBtn = document.getElementById('get-endpoints-btn'); | |||
function getEndpoints() { | |||
let request = new XMLHttpRequest(); | |||
request.addEventListener('load', function(event) { | |||
let response = JSON.parse(event.target.responseText); | |||
addBtns(response); | |||
}); | |||
request.open('GET', 'https://swapi.co/api/'); | |||
request.send(); | |||
} | |||
function addBtns(response) { | |||
const btnHtml = Object.keys(response).reduce(function(html, responseKey) { | |||
return ( | |||
html + | |||
'<button data-url="' + | |||
response[responseKey] + | |||
'">' + | |||
responseKey + | |||
'</button>' | |||
); | |||
}, ''); | |||
endpointContainer.innerHTML = btnHtml; | |||
} | |||
function makeRequest(event) { | |||
if (event.target.matches('button')) { | |||
let btn = event.target; | |||
let btnText = btn.innerHTML; | |||
btn.innerHTML = 'loading...'; | |||
let request = new XMLHttpRequest(); | |||
request.addEventListener('load', function(event) { | |||
if (event.target.status === 200) { | |||
let response = JSON.parse(event.target.responseText); | |||
console.log(response); | |||
btn.innerHTML = btnText; | |||
} else { | |||
console.log(event.target); | |||
btn.innerHTML = 'Dikke fail...'; | |||
} | |||
}); | |||
request.open('GET', event.target.dataset.url); | |||
request.send(); | |||
} | |||
} | |||
getEndpointsBtn.addEventListener('click', getEndpoints); | |||
endpointContainer.addEventListener('click', makeRequest); |
@@ -0,0 +1,28 @@ | |||
html { | |||
font-size: 15px; | |||
font-family: sans-serif; | |||
} | |||
div { | |||
margin: 4rem auto; | |||
width: 80%; | |||
max-width: 50rem; | |||
text-align: center; | |||
padding: 3rem; | |||
} | |||
#endpoint-container { | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
} | |||
button { | |||
line-height: 2rem; | |||
font-weight: 600; | |||
background-color: teal; | |||
color: white; | |||
border: none; | |||
margin: 0.5rem 0; | |||
padding: 0.6rem 2rem; | |||
} |
@@ -0,0 +1,6 @@ | |||
{ | |||
"trailingComma": "es5", | |||
"tabWidth": 4, | |||
"semi": true, | |||
"singleQuote": true | |||
} |
@@ -0,0 +1,18 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||
<meta http-equiv="X-UA-Compatible" content="ie=edge" /> | |||
<title>13-xmlhttprequest</title> | |||
<link rel="stylesheet" href="styles/main.css" /> | |||
</head> | |||
<body> | |||
<div> | |||
<button id="get-endpoints-btn">Get endpoints</button> | |||
</div> | |||
<div id="endpoint-container"></div> | |||
<script src="scripts/main.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,61 @@ | |||
const endpointContainer = document.getElementById('endpoint-container'); | |||
const getEndpointsBtn = document.getElementById('get-endpoints-btn'); | |||
function getEndpoints() { | |||
fetch('https://swapi.co/api/') | |||
.then(function(response){ | |||
if(response.ok){ | |||
return response.json(); | |||
} | |||
return Promise.reject('promise not ok'); | |||
}).then(function(jsonResponse){ | |||
addBtns(jsonResponse); | |||
}) | |||
.catch(function(error){ | |||
console.error(error); | |||
}); | |||
} | |||
function addBtns(response) { | |||
const btnHtml = Object.keys(response).reduce(function(html, responseKey) { | |||
return ( | |||
html + | |||
'<button data-url="' + | |||
response[responseKey] + | |||
'">' + | |||
responseKey + | |||
'</button>' | |||
); | |||
}, ''); | |||
endpointContainer.innerHTML = btnHtml; | |||
} | |||
function makeRequest(event) { | |||
if (event.target.matches('button')) { | |||
let btn = event.target; | |||
let btnText = btn.innerHTML; | |||
btn.innerHTML = 'loading...'; | |||
let request = new XMLHttpRequest(); | |||
request.addEventListener('load', function(event) { | |||
if (event.target.status === 200) { | |||
let response = JSON.parse(event.target.responseText); | |||
console.log(response); | |||
btn.innerHTML = btnText; | |||
} else { | |||
console.log(event.target); | |||
btn.innerHTML = 'Dikke fail...'; | |||
} | |||
}); | |||
request.open('GET', event.target.dataset.url); | |||
request.send(); | |||
} | |||
} | |||
getEndpointsBtn.addEventListener('click', getEndpoints); | |||
endpointContainer.addEventListener('click', makeRequest); |
@@ -0,0 +1,28 @@ | |||
html { | |||
font-size: 15px; | |||
font-family: sans-serif; | |||
} | |||
div { | |||
margin: 4rem auto; | |||
width: 80%; | |||
max-width: 50rem; | |||
text-align: center; | |||
padding: 3rem; | |||
} | |||
#endpoint-container { | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
} | |||
button { | |||
line-height: 2rem; | |||
font-weight: 600; | |||
background-color: teal; | |||
color: white; | |||
border: none; | |||
margin: 0.5rem 0; | |||
padding: 0.6rem 2rem; | |||
} |
@@ -5,12 +5,16 @@ function doSomething(){ | |||
newAray.push(i); | |||
} | |||
resolve(newAray); | |||
if(newAray.length ===0){ | |||
reject('oh ow!'); | |||
}else{ | |||
resolve(newAray); | |||
} | |||
}); | |||
return promise; | |||
} | |||
doSomething() | |||
.then(function(result){ | |||
@@ -20,4 +24,3 @@ function doSomething(){ | |||
console.log(error); | |||
}); | |||
} |