如何将 API 响应数据提取到 HTML 表中

Posted

技术标签:

【中文标题】如何将 API 响应数据提取到 HTML 表中【英文标题】:How to pull a API Response data into a HTML Table 【发布时间】:2022-01-21 21:06:42 【问题描述】:

我正在尝试从我收到的对 Google Workspace API 请求的响应中提取数据到 html 表,我收到的响应是一个数组,每次我制作时都存储在 HTML 元素中要求。这是我的代码:

  function execute() 
     return gapi.client.directory.users.list("domain": "mydomain", "maxResults": 450)
            .then(function(response) 
                let t = document.querySelector("#tabela") 
               let data = []    
                console.log(response)
                    response.result.users.forEach((user)=> 
                       
                        data.push(user) 
                        // console.log("Email"+ user.primaryEmail) 
                        // console.log("Email"+ user.lastLoginTime) 
                     SheetDB.write('https://sheetdb.io/api/v1/81m3qdtu47hra',  sheet: 'Sheet1', data:  email: '$user.primaryEmail' , login: '$user.lastLoginTime').then(function(result)
                     console.log(result);
                    , function(error)
                     console.log(error);
    );
                    )
                    console.log(data)
                    let td = data.reduce((acc, user)=>
                      acc += `<tr>$user.lastLoginTime</tr>`
              
                      return acc
                  ,"")
                  t.innerHTML = td
                  console.log("O result é:", td)
                  ,
                  function(err)  console.error("Execute error", err); );`

然后,我的代码无法用它填充我的 html 表:

     <table class="table table-striped">
        <tr  class="bg-info">
            <th>E-mail</th>
            <th>Last Login Time</th>
        <th>Status</th>
        <th>Permissions</th>
        </tr>
    
        <tbody id="myTable">
            
        </tbody>
    </table>
    
    <script>
        var myArray = document.querySelector("#tabela")
        
        buildTable(myArray)
    
    
    
        function buildTable(data)
            var table = document.getElementById('myTable')
    
            for (var i = 0; i < data.length; i++)
                var row = `<tr>
                                <td>$user.primaryEmail</td>
                          </tr>`
                table.innerHTML += row
    
    
            
        

我做错了什么?

【问题讨论】:

【参考方案1】:

buildTable 函数需要一个数组作为函数的参数,而您将整个 myTable 元素作为参数传递给脚本标记的第二行。这就是为什么 for 循环永远不会执行的原因,因为 data.length 将是未定义的。将数据数组从 API 传递给函数,您应该可以开始了。

【讨论】:

以上是关于如何将 API 响应数据提取到 HTML 表中的主要内容,如果未能解决你的问题,请参考以下文章

如何将获取的API响应正确地插入表中

使用 JMeter,如何从 API 的响应正文中提取字符串并将其保存到 csv 文件?

如何将JSON数据添加到HTML AWS lambda响应主体?

如何将谷歌视觉 API 响应保存到可处理的文件中

Jmeter如何提取响应头部的JSESSIONID

如何将响应数据包含到 axios 响应中?