Hello all,
So I am new to Javascript and working with APIs as well. I was given a code challenge where I have to display 8 random images from TheCatAPI in a grid format, and then have a ‘favorite’ button that when clicked will save the specific image for later. This is just a demo so to speak so a lot of functionality needed for other projects isn’t required here.
I have the images able to be displayed but I am having trouble getting the favorites to work. Was wondering if anyone could point me in the right direction. I feel like I’m getting closer to the answer but I keep getting a bunch of different errors and now I am just lost and confused again. I can’t post images so I am going to paste my code as best as possible. So far what I am trying to do is POST the selected image to the favorites and also add that image to an array and save the array on local storage to use it later.
I am posting the function I am using to try and save the favorite images. Keep in mind that I have no data saved on my actual computer or files, all data is coming just from the api on the web. I also have the ID of the favorite button set to be the same as the ID of the image that favorite button is currently assigned to.
JavaScript Function
`function addFavPhoto() {
main.onclick = function (event) {
event.preventDefault();
const element = event.target;
if (element.nodeName === 'BUTTON') {
console.log("Image Added to Favorites!")
//Grab ID from specific photo
let data = JSON.stringify({
"image_id": element.id,
});
let xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.thecatapi.com/v1/favourites");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("x-api-key", "906f9f50-3b14-4630-a89a-a0421d1e5317");
xhr.send(data);
//Add specific photo to array above
favoriteImages.push(data);
}
localStorage.setItem('favoriteImages', JSON.stringify(favoriteImages));
}
};
`