JavaScript 使用Fetch GET请求从JSON数据创建图表的代码

JavaScript 使用Fetch GET请求从JSON数据创建图表的代码

在本文中,我们将使用 Fetch API 的 Fetch() 方法通过获取 JSON 数据来创建一个简单的图表。Fetch API 允许我们以更简单的方式进行 HTTP 请求。

fetch() 方法: fetch() 方法用于获取资源,返回一个promise对象,一旦响应可用,promise对象将会被实现。

语法:

const response = fetch(resource [, init])

参数:

  • resource: 资源的路径(也可以是本地文件)
  • init: 你想要添加的任何其他选项,比如头部、正文、方法等等。

方法: 步骤如下所示:

步骤1: 第一步是通过指定资源的路径调用fetch函数。在本例中,我们将使用以下URL中的免费资源:

“https://datausa.io/api/data?drilldowns=Nation&measures=Population”

它包含了美国在不同年份的人口。下面是Response对象的示例:

Response {   
type: “cors”,   
URL: “https://datausa.io/api/data?drilldowns=Nation&measures=Population”,   
redirected: false,   
status: 200,   
ok: true,   
statusText: “OK”,   
headers: Headers,   
body: ReadableStream,   
bodyUsed: true   
}   
body: ReadableStream { locked: true }   
bodyUsed: true   
headers: Headers { }   
ok: true   
redirected: false   
status: 200   
statusText: “OK”   
type: “cors”   
url: “https://datausa.io/api/data?drilldowns=Nation&measures=Population”   
<prototype>: ResponsePrototype { clone: clone(), arrayBuffer: arrayBuffer(), blob: blob(), … } 

步骤2: 然后,我们将在数据流中获得一个结果。我们将查看以下JSON数据:

Object { data: (7) […], source: (1) […] }   
data: Array(7) [ {…}, {…}, {…}, … ]   
0: Object {   
“ID Nation”: “01000US”,   
Nation: “United States”,   
“ID Year”: 2019, …   
}   
​”ID Nation”: “01000US”​​​   
“ID Year”: 2019​​​   
Nation: “United States”​​​   
Population: 328239523​​​   
“Slug Nation”: “united-states”   
​​​Year: “2019”   
​​​<prototype>: Object { … }   
​​1: Object {   
“ID Nation”: “01000US”,   
Nation: “United States”,   
“ID Year”: 2018, …   
}   
​​2: Object {   
“ID Nation”: “01000US”,   
Nation: “United States”,   
“ID Year”: 2017, …   
}   
​​3: Object {   
“ID Nation”: “01000US”,   
Nation: “United States”,   
“ID Year”: 2016, …   
}   
4: Object {   
“ID Nation”: “01000US”,   
Nation: “United States”,   
“ID Year”: 2015, …   
}   
5: Object {   
“ID Nation”: “01000US”,   
Nation: “United States”,   
“ID Year”: 2014, …   
}   
6: Object {   
“ID Nation”: “01000US”,   
Nation: “United States”,   
“ID Year”: 2013, …   
}   
length: 7   
​​<prototype>: Array []   
​source: Array [ {…} ]   
​<prototype>: Object { … }​ 

正如您所看到的,我们有一个长度为7的数组。每个对象都有几个属性。在这些属性中,我们只是使用for循环将两个属性即Year和Population存储到两个不同的数组中。

步骤3: 最后一步是根据接收到的数据创建一个图表。我们使用的是chart.js,它是在网站上包含图表的一种简单方法。在head标签中添加CDN链接

<script src=”https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.js”>

下面是上述方法的实现:

HTML

<html> 
  
<head> 
    <script type="text/javascript" src= 
"https://code.jquery.com/jquery-1.12.0.min.js"> 
    </script> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width,  
                                   initial-scale=1"> 
    <script src= 
"https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"> 
    </script> 
    <title>US Population Chart</title> 
</head> 
  
<body> 
  
    <canvas id="bar-chart" width="800" height="450"> 
    </canvas> 
    <script> 
  
        getData(); 
  
        async function getData() { 
            const response = await fetch( 
'https://datausa.io/api/data?drilldowns=Nation&measures=Population'); 
            console.log(response); 
            const data = await response.json(); 
            console.log(data); 
            length = data.data.length; 
            console.log(length); 
  
            labels = []; 
            values = []; 
            for (i = 0; i < length; i++) { 
                labels.push(data.data[i].Year); 
                values.push(data.data[i].Population); 
            } 
  
  
            new Chart(document.getElementById("bar-chart"), { 
                type: 'bar', 
                data: { 
                    labels: labels, 
                    datasets: [ 
                        { 
                            label: "Population (millions)", 
                            backgroundColor: ["#3e95cd", 
                                              "#8e5ea2",  
                                              "#3cba9f",  
                                              "#e8c3b9",  
                                              "#c45850", 
                                              "#CD5C5C",  
                                              "#40E0D0"], 
                            data: values 
                        } 
                    ] 
                }, 
                options: { 
                    legend: { display: false }, 
                    title: { 
                        display: true, 
                        text: 'U.S population' 
                    } 
                } 
            }); 
  
        } 
  
    </script> 
</body> 
  
</html>

输出:

JavaScript 使用Fetch GET请求从JSON数据创建图表的代码

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程