首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在HTML中显示来自GET请求的数据?

如何在HTML中显示来自GET请求的数据?
EN

Stack Overflow用户
提问于 2022-04-28 02:09:31
回答 1查看 64关注 0票数 0

单击按钮时,希望返回来自端点的数据。

但是,我得到了以下错误:

代码语言:javascript
复制
Id:undefinedURL:undefinedName:undefinedDescription:undefined

这是我的职责:

代码语言:javascript
复制
//fetch
function RetrieveEntries(){
    fetch("http://vk-data:8003/v1/entries/", {
headers:{
   'x_auth': 'gdjsjaosh-hkds-dhjsk-hjjdbah',
   'data': 'access-control',
}}
    )
.then(function(response) {
    return response.json()
})
.then((response) => {
    var results = document.getElementById('results')
    console.log(response)
    response.forEach(element => {
        results.innerHTML = 'Id:' + response.id + 'Type:' + response.type + "Name:" + response.name "<br><br>"

    });
})
.catch(error => console.error(error))

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-28 02:16:26

在每次迭代中都要替换innerHTML。你是有意追加的吗?

您还应该使用每个元素迭代中的属性。尝试在response (数组)上访问它们是获取undefined值的原因。

要格式化结果,您可能需要使用类似于的东西,它可以很容易地用CSS进行样式设计。

代码语言:javascript
复制
const createElement = (tag, ...content) => {
  const el = document.createElement(tag);
  el.append(...content);
  return el;
};

const formatData = ({ id, url, name, description }) =>
  createElement(
    "dl",
    createElement(
      "div",
      createElement("dt", "Id"), 
      createElement("dd", id)
    ),
    createElement(
      "div",
      createElement("dt", "URL"),
      createElement("dd", Object.assign(createElement("a", url), { href: url }))
    ),
    createElement(
      "div",
      createElement("dt", "Description"),
      createElement("dd", description)
    )
  );

然后获取数据,将数组映射到格式化的元素,并将它们附加到结果div.

代码语言:javascript
复制
const results = document.getElementById("results");
// empty the <div> for a fresh start
results.innerHTML = "";

fetch("http://vk-data:8003/v1/entries/", {
  headers: {
    x_auth: "gdjsjaosh-hkds-dhjsk-hjjdbah",
    data: "access-control",
  },
})
  .then((res) => (res.ok ? res.json() : Promise.reject(res)))
  .then((data) => {
    results.append(
      ...data.flatMap((entry) => [
        formatData(entry),
        document.createElement("br"),
        document.createElement("br"), // could also just use CSS margin
      ])
    );
  })
  .catch(console.error);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72037199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档