Skip to content

Instantly share code, notes, and snippets.

@cba85
Created November 16, 2023 14:44
Show Gist options
  • Save cba85/51d6ec6fdd988c42051b14d3e333cb4b to your computer and use it in GitHub Desktop.
Save cba85/51d6ec6fdd988c42051b14d3e333cb4b to your computer and use it in GitHub Desktop.
Fetch / XmlHttpRequest example
document.querySelector("form").addEventListener("submit", async (e) => {
e.preventDefault();
document.querySelector(".loading").style.display = "block";
const results = document.querySelector("#results");
results.innerHTML = "";
let response;
try {
response = await fetch("https://dog.ceo/api/breeds/image/random");
} catch (error) {
console.log(error);
}
let data;
try {
data = await response.json();
document.querySelector(".loading").style.display = "none";
} catch (error) {
console.log(error);
}
const img = document.createElement("img");
img.src = data.message;
results.appendChild(img);
/*
fetch("https://dog.ceo/api/breeds/image/random")
.then((response) => {
response
.json()
.then((data) => {
console.log(data);
const img = document.createElement("img");
img.src = data.message;
results.appendChild(img);
})
.catch((error) => {
console.log(error);
});
})
.catch((error) => {
console.log(error);
});
*/
console.log("ok");
/*
try {
const request = new XMLHttpRequest();
request.open("GET", "https://dog.ceo/api/breeds/image/random");
request.addEventListener("error", () => {
document.querySelector(".error").style.display = "block";
});
request.responseType = "json";
request.addEventListener("load", () => {
if (request.status != "200") {
document.querySelector(".error").style.display = "block";
return;
}
document.querySelector(".error").style.display = "none";
const img = document.createElement("img");
img.src = request.response.message;
results.appendChild(img);
});
request.send();
} catch (error) {
console.error(`Erreur XHR ${request.status}`);
}
*/
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script src="app.js" defer></script>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.css"
/>
<style>
.error {
color: red;
}
</style>
</head>
<body>
<h1>Chien 🐶</h1>
<form>
<button type="submit">Woof woof</button>
</form>
<p class="loading" style="display: none">Loading... Please wait...</p>
<p id="results"></p>
<p class="error" style="display: none">Il y'a une erreur</p>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment