我的目标是在通过HTML抓取获得的网页上显示一些数据。
“我的提取”(有效)如下所示:
<script>
let response = fetch(
"https://api.seatgeek.com/2/events?per_page=100&venue.city=boston&client_id=MYAPIKEY"
)
.then((response) => response.json())
.then((response) => console.log(response.events[0].title));
</script>
代码可以正常工作,并按照我的要求将响应记录到控制台。现在,我想在我的网页上显示一些回复。
我的尝试看起来像这样
<center><h2 id="response"></h2></center>
<script>
let response = fetch(
"https://api.seatgeek.com/2/events?per_page=100&venue.city=boston&client_id=MYAPIKEY"
)
.then((response) => response.json())
.then((response) => console.log(response.events[0].title))
.then((response) => {
document.getElementById("response").innerHTML = response.events[0].title;
});
</script>
上下文和详细信息:
VM22305 about:srcdoc:8 Uncaught (in promise) TypeError: Cannot read property 'events' of undefined
感谢您的帮助!
答案 0 :(得分:3)
第二个then
是控制台日志记录,什么也不返回(console.log返回undefined
),因此在下一个then
语句中,response
是undefined
将您的代码更改为:
<center><h2 id="response"></h2></center>
<script>
let response = fetch(
"https://api.seatgeek.com/2/events?per_page=100&venue.city=boston&client_id=MYAPIKEY"
)
.then((response) => response.json())
.then((response) => {
console.log(response.events[0].title);
return response;
})
.then((response) => {
document.getElementById("response").innerHTML = response.events[0].title;
});
</script>
它应该可以工作。
答案 1 :(得分:1)
如果您想要一系列的thens,则需要将一个promise返回到下一个,例如:
let response = fetch(
"https://api.seatgeek.com/2/events?per_page=100&venue.city=boston&client_id=MYAPIKEY"
)
.then((response) => response.json())
.then((response) => {
document.getElementById("response").innerHTML = response.events[0].title;
});