执行 API 调用时本地未定义的 404



这个项目正在使用鸡尾酒 api 搜索特定成分(想想杜松子酒或伏特加),然后返回所有含有该成分的饮料。我能够显示结果,但我想要饮料的缩略图(包含在 api 中作为strDrinkThumb)。当我尝试显示图片时,出现以下错误:

GET http://local/undefined 404 (Not Found)

window.addEventListener('DOMContentLoaded', (event) => {
console.log('DOM fully loaded and parsed');
});
let ingredients = document.getElementById('ingredients');
let searchTerm= document.getElementById('search-Bar');
let searchBtn = document.getElementById('searchBtn');
let drinkInfo = document.getElementById('drinkInfo');
let ingredientList = []

searchBtn.addEventListener("click", async (e) => {
const searchString = searchTerm.value.toLowerCase();
fetch(`https://www.thecocktaildb.com/api/json/v1/1/filter.php?i=${searchString}`)
.then((response) => response.json())
.then((filteredIngredients) => {
displayIngredient(filteredIngredients.drinks);
})
.catch((error) => {

});    

});

function displayIngredient(drinkData){
const ingredients = [];
//maps over array and makes new array
drinkInfo.innerHTML =  drinkData.map( ({strDrink}) => { //destructuring
//use backticks and html  
return` <div> //use backticks and html
<div class="card" style="width: 14rem;">
<div class="card-body">
<h5 class="card-title">${strDrink} </h5>

<img src="${drinkData.strDrinkThumb}"/>

</div></div>
`; //use backticks and html
}).join('');

drinkInfo.appendChild(drinkInfo);
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Cocktail App</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
<link rel="stylesheet" href="styles.css">


</head>
<body>
<header>
<input type="text" id="search-Bar" placeholder="Enter main ingredient..."/>
<button id="searchBtn">search</button>
</header>
<div class="drinkInfo" id="drinkInfo">

</div>

</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script>
<script type="text/javascript" src="./extrafile.js"></script>
</body>

</html>

drinkData.map函数中,您只是从对象中提取strDrink值,您还需要获取strDrinkThumb

然后你尝试从drinkData获取strDrinkThumb,这是一个数组,而不是一个对象。

试试这个:

drinkInfo.innerHTML =  drinkData.map( ({strDrink, strDrinkThumb}) => { //destructuring
//use backticks and html  
return` <div> //use backticks and html
<div class="card" style="width: 14rem;">
<div class="card-body">
<h5 class="card-title">${strDrink} </h5>

<img src="${strDrinkThumb}"/>

</div></div>
`; //use backticks and html
}).join('');

最新更新