My friends and I have been working on a project that involves integrating an API, but we've hit a roadblock. The "ok" button, which is supposed to execute a function after uploading a photo and clicking ok, is not working as expected. Strangely, the "choose files" button works fine.
I tested the API sample in a separate solution and it worked perfectly. This makes me think there might be a mistake in the code elsewhere or some kind of blockage preventing communication with the API's web address. Unfortunately, within our project (ASP.NET razor page), the functionality doesn't seem to work.
I've tried various solutions like creating a new button, moving the JavaScript tag around, but nothing seems to fix the issue. I have omitted the API key for privacy reasons. Any assistance would be greatly appreciated!
@{
ViewData["Title"] = "Identify a Plant";
}
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<form>
<input type="file" multiple />
<!--<button type="button">OK</button>-->
<button type="button">OK</button>
</form>
<script type="text/javascript">
document.querySelector('button').onclick = function sendIdentification() {
const files = [...document.querySelector('input[type=file]').files];
const promises = files.map((file) => {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = (event) => {
const res = event.target.result;
console.log(res);
resolve(res);
}
reader.readAsDataURL(file)
})
})
Promise.all(promises).then((base64files) => {
console.log(base64files)
const data = {
api_key: "Die8ewFGvpw5JrRTuOEjgGR10uL--",
images: base64files,
modifiers: ["crops_fast", "similar_images"],
plant_language: "en",
plant_details: ["common_names",
"url",
"name_authority",
"wiki_description",
"taxonomy",
"synonyms"]
};
fetch('https://api.plant.id/v2/identify', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
})
.then(response => response.json())
.then(data => {
console.log('Success:', data);
})
.catch((error) => {
console.error('Error:', error);
});
})
};
</script>
</body>
</html>