【问题标题】:Javascript How to retrieve data using APIJavascript 如何使用 API 检索数据
【发布时间】:2021-01-10 11:54:18
【问题描述】:

我想连接到 API 并从中检索数据。我需要在 Hubspot CMS 上完成。

这是 API 的链接:
https://staging.tabsera.com/apiDoc/#api-landing-getCourses

我尝试使用 Codepen 示例执行此操作,但即使控制台没有显示任何错误,它也没有显示数据:

const courses = document.getElementById('courses'),
url = 'https://staging.tabsera.com/api/v1/landing/courses';

const createNode = element => {return document.createElement(element);};
const append = (parent, el) => {return parent.appendChild(el);};

fetch(url).
then(response => {return response.json();}).
then(data => {
  let courses = data.results;
  return courses.map(courses => {
    let english = createNode('<div class="english">'),
    img = createNode('img'),
    span = createNode('span');
    img.src = runner.picture.medium;
    span.innerHTML = `${courses.english.author} ${courses.name.last}`;
    append(div, img);
    append(div, span);
    append(div, div);
  });
}).
catch(error => {console.log(error);});

https://codepen.io/zestweb/pen/zYqeNMr

非常感谢任何帮助。

【问题讨论】:

    标签: javascript jquery node.js json reactjs


    【解决方案1】:

    您的回复中没有results 字段,请直接尝试courses

    fetch('https://staging.tabsera.com/api/v1/landing/courses')
      .then(response => response.json())
      .then(data => console.log(data.courses))
    

    【讨论】:

      【解决方案2】:

      我用过axios; 我得到了你需要的东西。这是一个简单的方法。

      var axios = require('axios');
      var qs = require("querystring");
      
      axios("https://staging.tabsera.com/api/v1/landing/courses", {
          method: "GET"
      })
          .then(response => {
              console.log("Application data");
              console.log(response.data.courses.English);
          })
          .catch(err => {
              console.log("**************Get access token error**************")
              console.log(err)
          });
      

      【讨论】:

        【解决方案3】:

        您可以在 let courses = data.results; 行之前添加日志行 console.log(data)

        在那里,您可以在浏览器的控制台窗口(如下所示)中看到数据对象包含课程属性而不是结果。 courses: Arabic: []English: [{…}]Maths: []Science: [{…}]Social: []

        所以你可以将课程的阅读发送到let courses = data.courses;

        【讨论】:

          【解决方案4】:

          请试一试。

          const ul = document.getElementById('runners'),
          url = 'https://staging.tabsera.com/api/v1/landing/courses';
          
          const createNode = element => {return document.createElement(element);};
          const append = (parent, el) => {return parent.appendChild(el);};
          
          fetch(url).
          then(response => {return response.json();}).
          then(data => {
            let courses = data.courses;
            for (course in courses) {
              runners = courses[course];
              runners.map(runner => {
                let li = createNode('li'),
                span = createNode('span');
                span.innerHTML = `${runner.author}`;
                append(li, span);
                append(ul, li);
              });
            }
            
          }).
          catch(error => {console.log(error);});
          

          【讨论】:

          • 太好了!我已在此 codepen 中添加了您的代码:codepen.io/zestweb/pen/zYqeNMr 如何添加新项目例如 API 对象有一个名为 description 的项目,我想创建一个包含描述的 div,我已将其添加到 codepen 但它好像没用?
          • 请使用此代码。附加(李,跨度);附加(li,div1);
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-07-19
          • 1970-01-01
          • 2015-10-09
          • 1970-01-01
          • 2022-01-20
          • 2019-07-19
          • 2016-07-22
          相关资源
          最近更新 更多