Skip to content

Instantly share code, notes, and snippets.

@cba85
Last active October 2, 2024 12:45
Show Gist options
  • Save cba85/34fef5ac32b9a41570a5cc4c9dde7005 to your computer and use it in GitHub Desktop.
Save cba85/34fef5ac32b9a41570a5cc4c9dde7005 to your computer and use it in GitHub Desktop.
IPI Toulouse 2024-2025 - IJVS020
const loadButton = document.querySelector("#load");
const loadingElement = document.querySelector("#loading");
const errorElement = document.querySelector(".error");
const usersListElement = document.querySelector("#users");
loadButton.addEventListener("click", async function (event) {
event.preventDefault();
loadingElement.style.display = "block";
let response;
try {
response = await fetch("https://jsonplaceholder.typicode.com/users");
} catch (error) {
usersListElement.innerHTML = "";
errorElement.textContent = `Vous n'êtes pas connecté à internet`;
errorElement.style.display = "block";
return;
}
if (!response.ok) {
loadingElement.style.display = "none";
errorElement.textContent = `Impossible de récupérer les utilisateurs (erreur ${response.status})`;
errorElement.style.display = "block";
return;
}
const users = await response.json();
errorElement.textContent = "";
errorElement.style.display = "none";
loadingElement.style.display = "none";
usersListElement.innerHTML = "";
for (const user of users) {
// <li>Leanne Graham ([email protected])</li>
const liElement = document.createElement("li");
liElement.textContent = `#${user.id} ${user.name} (${user.email})`;
usersListElement.appendChild(liElement);
}
});
async function getSuperheroes() {
const res = await fetch("https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json");
const superheroes = await res.json();
console.log(superheroes);
}
getSuperheroes();
//const response = fetch("https://jsonplaceholder.typicode.com/users", { method: "GET" });
//const response = fetch("https://jsonplaceholder.typicode.com/users");
//console.log(response);
const loadButton = document.querySelector("#load");
loadButton.addEventListener("click", function (event) {
event.preventDefault();
const loadingElement = document.querySelector("#loading");
const errorElement = document.querySelector(".error");
loadingElement.style.display = "block";
fetch("https://jsonplaceholder.typicode.com/users").then(function (response) {
console.log(response);
if (!response.ok) {
loadingElement.style.display = "none";
errorElement.textContent = `Impossible de récupérer les utilisateurs (erreur ${response.status})`;
errorElement.style.display = "block";
return;
}
response.json().then(function (users) {
console.log(users);
errorElement.textContent = "";
errorElement.style.display = "none";
loadingElement.style.display = "none";
const usersListElement = document.querySelector("#users");
usersListElement.innerHTML = "";
for (const user of users) {
// <li>Leanne Graham ([email protected])</li>
const liElement = document.createElement("li");
liElement.textContent = `${user.name} (${user.email})`;
usersListElement.appendChild(liElement);
}
}).catch(function (error) {
console.error(error);
});
}).catch(function (error) {
console.error("[ERROR]");
console.error(error);
loadingElement.style.display = "none";
});
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Users</title>
<!-- <script src="xmlhttprequest.js" defer></script> -->
<!-- <script src="fetch-promises.js" defer></script> -->
<script src="fetch-async.js" defer></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.css">
<style>
.error {
font-weight: bold;
color: red;
}
</style>
</head>
<body>
<h1>Users</h1>
<button id="load">Load users</button>
<p id="loading" style="display: none">Chargement en cours... Veuillez patienter...</p>
<p class="error" style="display: none"></p>
<ul id="users"></ul>
</body>
</html>
const request = new XMLHttpRequest();
function getUsers() {
if (request.status != 200) {
console.error(`Error ${request.status}`);
return;
}
const users = request.response;
console.log("LOAD");
document.querySelector("#loading").style.display = "none";
const usersListElement = document.querySelector("#users");
for (const user of users) {
// <li>Leanne Graham ([email protected])</li>
const liElement = document.createElement("li");
liElement.textContent = `${user.name} (${user.email})`;
usersListElement.appendChild(liElement);
}
}
try {
request.open("GET", "https://jsonplaceholder.typicode.com/users");
request.responseType = "json";
request.addEventListener("load", function () {
//getUsers();
setTimeout(() => {
getUsers();
}, 1000);
});
request.addEventListener("error", function () {
console.error("Erreur XHR");
});
request.send();
} catch (error) {
console.log("Error", error);
}
console.log("END");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment