JSON数据渲染为表格与雷达图

        本篇博客将介绍如何将AJAX获取后端返回的JSON数据渲染到前端页面,包括表格展示和雷达图可视化两种形式。

通过后端获取的数据如下:

1. 表格渲染实现

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style type="text/css">
			table {
				width: 100%;
				height: 20vh;
				background-color: bisque;
			}

			td {
				text-align: center;
				font-weight: bold;
			}

			tr:hover {
				background-color: azure;
			}
		</style>
	</head>
	<body>

	</body>
	<script type="text/javascript">
		function queryTabData() {

			//1.创建原生ajax请求对象
			let ajaxObj = new XMLHttpRequest();

			//2.设置请求方法和链接
			ajaxObj.open("get", "http://127.0.0.1:8790/querytabdatas");

			//3.发送请求
			ajaxObj.send();

			//4.回调,得到服务器传送的数据
			ajaxObj.onreadystatechange = () => {

				if (ajaxObj.readyState == 4 && ajaxObj.status == 200) {
					let result = ajaxObj.responseText;
					console.log('服务器端传回的数据为:' + result);
					console.log(typeof result);

					//eval函数把这个文本转换成js对象:json的字符串对象
					let re1 = eval(result)

					if (re1 != undefined) {
						let objdatas = JSON.parse(JSON.stringify(re1));
						console.log(objdatas);
						console.log(typeof objdatas);
						createTabel(objdatas);
					}

				}
			}
		}

		function createTabel(objdatas) {

			//获取body对象
			let bodyObj = document.body

			//创建表格对象标签	 
			let tabObj = document.createElement("table");
			
			//设置表格边框
			tabObj.border = 1;
			
			let trObj1 = document.createElement("tr");

			//加载key  es6语法
			Object.keys(objdatas[0]).forEach(function(key) {

				console.log("->" + key);
				if (key == 'eid') {
					key = "员工编号"
				}
				if (key == 'ename') {
					key = "员工姓名"
				}
				if (key == 'eaddress') {
					key = "员工地址"
				}
				if (key == 'esalary') {
					key = "员工工资"
				}
				if (key == 'epwd') {
					key = "员工密码"
				}
				if (key == 'estate') {
					key = "员工状态"
				}
				if (key == 'ebirthday') {
					key = "员工出生年月"
				}

				let thObj0 = document.createElement("th");
				thObj0.innerText = key;
				trObj1.appendChild(thObj0);

			});
			
			//添加到表格中
			tabObj.appendChild(trObj1);

			//加载数据
			for (let i = 0; i < objdatas.length; i++) {
				//创建行
				let trObj = document.createElement("tr");

				//创建td
				let tdObj0 = document.createElement("td");
				let tdObj1 = document.createElement("td");
				let tdObj2 = document.createElement("td");
				let tdObj3 = document.createElement("td");
				let tdObj4 = document.createElement("td");
				let tdObj5 = document.createElement("td");
				let tdObj6 = document.createElement("td");

				tdObj0.innerText = objdatas[i].eid;
				tdObj1.innerText = objdatas[i].eaddress;
				tdObj2.innerText = objdatas[i].ename;
				tdObj3.innerText = objdatas[i].esalary;
				tdObj4.innerText = objdatas[i].epwd;
				tdObj5.innerText = objdatas[i].estate;
				tdObj6.innerText = objdatas[i].ebirthday;

				trObj.appendChild(tdObj0);
				trObj.appendChild(tdObj1);
				trObj.appendChild(tdObj2);
				trObj.appendChild(tdObj3);
				trObj.appendChild(tdObj4);
				trObj.appendChild(tdObj5);
				trObj.appendChild(tdObj6);

				//添加到表格中
				tabObj.appendChild(trObj);
			}

			//表格添加到body标签中
			bodyObj.appendChild(tabObj);
		}
		queryTabData();
	</script>
</html>

实现效果:

2. 雷达图可视化实现

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			#main {
				width: 90vh;
				height: 60vh;
			}
		</style>
		<script src="https://cdn.jsdelivr.net/npm/echarts@6.0.0/dist/echarts.min.js"></script>
	</head>
	<body>
		<div id="main"></div>
	</body>
	<script type="text/javascript">
		function loadView() {
			//1.创建原生ajax请求对象
			let ajaxObj = new XMLHttpRequest();

			//2.设置请求方法和链接
			ajaxObj.open("get", "http://127.0.0.1:8790/querytabdatas");

			//3.发送请求
			ajaxObj.send();

			//4.回调,得到服务器传送的数据
			ajaxObj.onreadystatechange = () => {

				if (ajaxObj.readyState == 4 && ajaxObj.status == 200) {
					let result = ajaxObj.responseText;
					console.log('服务器端传回的数据为:' + result);
					console.log(typeof result);

					//eval函数把这个文本转换成js对象:json的字符串对象
					let re1 = eval(result)

					if (re1 != undefined) {
						let objdatas = JSON.parse(JSON.stringify(re1));
						console.log(objdatas);
						console.log(typeof objdatas);
						loadPieView(objdatas)
					}
				}

			}

		}

		function loadPieView(objdatas) {
			let echartObj = echarts.init(document.getElementById("main"));

			let option = {
				legend: {
					data: ['茉莉1', '茉莉2']
				},
				radar: {
					// shape: 'circle',
					indicator: [{
							name: 'Sales',
							max: 6500
						},
						{
							name: 'Administration',
							max: 16000
						},
						{
							name: 'Information Technology',
							max: 30000
						},
						{
							name: 'Customer Support',
							max: 38000
						},
						{
							name: 'Development',
							max: 52000
						},
						{
							name: 'Marketing',
							max: 25000
						}
					]
				},
				series: [{
					name: 'Budget vs spending',
					type: 'radar',
					data: [{
							value: [4200, 3000, 20000, 35000, 50000, 18000],
							name: '茉莉1'
						},
						{
							value: [5000, 14000, 28000, 26000, 42000, 21000],
							name: '茉莉2'
						}
					]
				}]
			};
			echartObj.setOption(option);
		}
		loadView();
	</script>
</html>

实现效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值