服务端响应JSON数据
先设计出一个需求:如下图所示,键盘的任意键按下,向服务端发送请求,服务端返回结果呈现在div中
完成该需求需要准备前端与服务端内容,准备一个html文件和一个js文件
1.server.js文件
/1.引入express
const { response } = require('express');
const express = require('express');
//2.创建应用对象
const app = express()
//3.创建路由规则
app.all('/json-server',(request,response)=>{
//设置响应头,设置允许跨域
response.setHeader('Access-Control-Allow-Origin','*')
//响应头
response.setHeader('Access-Control-Allow-Headers','*')
//响应一个数据
const data = {
name:"xupt"
}
//对对象进行字符串转换
let str = JSON.stringify(data);
//设置响应体
response.send(str)
});
//4.监听端口启动服务
app.listen(5000,()=>{
console.log('服务已经启动,5000端口监听中....');
})
2.JSON.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JSON响应</title>
<style>
#result{
width: 200px;
height: 100px;
border: solid 1px #89b;
}
</style>
</head>
<body>
<div id="result"></div>
<script>
const result = document.getElementById('result')
//绑定键盘按下事件
window.onkeydown = function(){
//发送请求
const xhr = new XMLHttpRequest();
//设置响应体数据的类型
xhr.responseType = 'json'
//初始化
xhr.open('GET','http://127.0.0.1:5000/json-server')
//发送
xhr.send()
//事件绑定
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
if(xhr.status >= 200 && xhr.status <300){
//处理服务端访问结果
// console.log(xhr.response);
// result.innerHTML = xhr.response;
//1.手动对数据转化
// let data = JSON.parse(xhr.response);
// result.innerHTML = data.name
//2.自动转换
result.innerHTML = xhr.response.name
}
}
}
}
</script>
</body>
</html>
处理服务端访问结果时有两种方法:
1.手动对数据转化
let data = JSON.parse(xhr.response);
result.innerHTML = data.name
2.自动转换
console.log(xhr.response);
result.innerHTML = xhr.response.name