Я новичок в API и хочу добавить API базы данных USDA Nutrients на свой веб-сайт. Я хочу, чтобы пользователь мог искать еду, выбрать один из появившихся результатов и просмотреть информацию о его питании.
Как я могу сделать это на обычном JS? Я создал панель поиска на своем веб-сайте, и JS принимает данные и запрашивает данные из API USDA.
var apiKey = '';
var q = "eggs";
var url = "http://api.nal.usda.gov/ndb/search/?format=json&q=" + q + "&sort=n" + "&max=25" + "&offset=0" + "&api_key=" + apiKey;
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
var data = JSON.parse(this.responseText);
document.querySelector("#usdaResults").innerHTML = data.body;
}
};
xhr.send();
Я хочу сначала представить пользователю список результатов того, что они искали. Затем, после того, как они щелкают по продукту, я хочу представить его информацию о питании (белок и т. Д.).
РЕДАКТИРОВАТЬ: Когда пользователь ищет еду, я хочу отобразить «группу», «имя» и «ману» всех доступных результатов. В то же время, когда пользователь хочет просмотреть информацию о питании для конкретного продукта из перечисленных, я хочу получить его номер «ndbno» и посмотреть его в базе данных USDA, чтобы я мог отобразить данные после. Так же, как показано на официальном сайте: https://ndb.nal.usda.gov/ndb/search/list?SYNCHRONIZER_TOKEN=c91f87b5-59c8-47e0-b7dc-65b3c067b7ff&SYNCHRONIZER_URI=%2Fndb%2Fsearch%2Flist&qt=&qlookup=egg+potato&ds=&manu=
РЕДАКТИРОВАТЬ 2: Я получаю эту ошибку сейчас.
var apiKey = '';
var q = document.getElementById('search').value;
var url = "http://api.nal.usda.gov/ndb/search/?format=json&q=" + q + "&sort=n" + "&max=25" + "&offset=0" + "&api_key=" + apiKey;
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
function getData() {
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText)
var data = JSON.parse(this.responseText);
if (data && data.list && data.list.item) {
var html = "";
data.list.item.map(item => {
let string = "<p>Name: " + item.name + " Manu: " + item.manu + " Group: " + item.group + "<p>";
html += string;
})
}
document.querySelector("#usdaResults").innerHTML = html;
}
else {
console.log("Error", xhr.statusText);
}
}
xhr.send();
}
HTML:
<section class="usda">
<h1>USDA Nutrients Database</h1>
<form id="search">
<input type="text" placeholder="Search.." name="search">
<button type="button" onclick="getData();">Search</button>
</form>
<div id="usdaResults"></div>
</section>