javascript_series5_ajax
by aelgy369
HTML
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ajax practice</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
</head>
<body>
<div id="id"></div>
<div id="category"></div>
<div id="description"></div>
<div class="container d-flex justify-content-center mt-5">
<div class="card w-100">
<div>
<button id='btn' class="btn btn-primary mt-2 ms-2">Load Products</button>
</div>
<hr>
<div class="card-body">
<ul id="list" class="row list-unstyled">
<!-- <li class="col-md-4 col-lg-3 mb-3">
<div class="card text-bg-light h-100">
<img class="object-fit-contain h-50" src="https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg">
<div class="card-body d-flex flex-column">
<h5 class="card-title flex-grow-1 mt-5">Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops</h5>
<button id="detail" class="btn btn-primary" data-id="1" data-bs-toggle="modal" data-bs-target="#exampleModal">Details</button>
</div>
</div>
</li> -->
</ul>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</body>
JavaScript
const list = document.querySelector('#list')
const url = 'https://fakestoreapi.com/products'
let a = [];
function loadProduct() {
fetch(url)
.then(res => {
return res.json()
})
.then(json => {
a = json;
render();
})
}
function render() {
let str = "";
a.forEach((item) => {
str += `
<li class="col-md-4 col-lg-3 mb-3">
<div class="card text-bg-light h-100">
<img class="object-fit-contain h-50" src="${item.image}">
<div class="card-body d-flex flex-column">
<h5 class="card-title flex-grow-1 mt-5">${item.title}</h5>
<button id="detail" class="btn btn-primary" data-id="${item.id}">Details</button>
</div>
</div>
</li>
`;
})
list.innerHTML = str;
}
const btn = document.querySelector('#btn');
btn.onclick = loadProduct;
function showAlert(id) {
fetch(url + "/" + id)
.then(res => {
return res.json()
})
.then(json => {
a = json;
alert(a.id);
alert(a.category);
alert(a.description);
})
}
// listen to data panel
list.addEventListener('click', event => {
if (event.target.matches('.btn-primary')) {
showAlert(event.target.dataset.id)
}
})