【发布时间】:2018-05-10 06:59:40
【问题描述】:
我正在尝试对 API 进行两次调用。第一次调用是在页面加载时,显示 API 中评分最高的十个电视节目。现在工作正常。 现在的问题是何时应该在页面上显示搜索结果。我希望带有 id app 的 div 得到更新并显示用户在输入字段中写入的搜索结果。
我在 Javascript 部分遇到问题,这是肯定的。请帮忙 :) 第二个 API 调用无法正常工作,我试图以与第一个工作相同的方式进行操作。
// show the shows with highest ranking
fetch('https://api.tvmaze.com/shows')
.then(blob => blob.json())
.then(json => {
const topTenShows = json
.filter(show => show.rating.average)
.sort((a, b) => a.rating.average > b.rating.average ? -1 : 1)
.slice(0, 9) // tar element 0-9 i arrayen
return topTenShows
})
.then(shows => {
const app = document.getElementById('app')
app.innerHTML = shows.map(show => `
<div class="col-sm movie-content">
<img src="${show.image.medium}">
<div class="movie-info">
<h5>${show.name}</h5>
<span>Rating: ${show.rating.average}</span>
<br />
<span>Rating: ${show.genres}</span>
</div>
</div>
`).join()
})
// show the search results
function searchTvAmaze ({ target }) {
fetch(`https://api.tvmaze.com/search/shows?q=${target.value}`)
.then(blob => blob.json())
.then(shows => {
const app = document.getElementById('app')
app.innerHTML = shows.map(show => `
<div class="col-sm movie-content">
<img src="${show.image.medium}">
<div class="movie-info">
<h5>${show.name}</h5>
<span>Rating: ${show.rating.average}</span>
<br />
<span>Rating: ${show.genres}</span>
</div>
</div>
`).join()
})
}
const inputSearchField = document.querySelector('.inputSearchField')
inputSearchField.addEventListener('keydown', searchTvAmaze)
<div class="col-sm-10 main-content">
<div class="search">
<input class="inputField inputSearchField" type="text" placeholder="Search...">
</div>
<div class="container">
<div id="app" class="row">
</div>
</div>
</div>
【问题讨论】:
标签: javascript json api