在实际工作中,向服务端发送请求,服务端返回的结果大都是json格式的数据,

在窗口下面按下任意一个按键就会向服务端发送请求,服务端会返回结果,在div中显示

触发ajax实现局部刷新 资源不重新加载(页面没有刷新,前端页面触发ajax和服务器实现交互)

首先进行服务器端进行书写——实际上在我的浏览器版本中直接 send直接传递对象也是可以的

但在实际开发中需要传递json格式字符串较多

//1、导入express
const express=require('express')
//2、创建应用对象  创建web服务器
const app=express()
//3、创建路由规则
//监听客户端的GET请求和POST请求,并向客户端响应具体内容
//requset是对请求报文的封装
//response是对响应报文的封装
app.get('/server',function(requset,response){
    //设置响应头 名称 值----设置允许跨域
    response.setHeader('Access-Control-Allow-Origin','*');
    //设置响应体
    response.send('hello AJAX');
})
app.all('/server',function(requset,response){
    //设置响应头 名称 值----设置允许跨域
    response.setHeader('Access-Control-Allow-Origin','*');
    response.setHeader('Access-Control-Allow-Headers','*');//所有请求头都支持 还是存在问题

    //设置响应体
    response.send('uuiiiii');
})
app.get('/json-server',function(requset,response){
    //设置响应头 名称 值----设置允许跨域
    response.setHeader('Access-Control-Allow-Origin','*');
	//响应一个数据
    const data={//对象
        name:'张三'
    };
    //对对象SON.stringify 进行字符串转成json转换
    let str=JSON.stringify(data);
    //设置响应体
    //目前服务器端传递的是对象 会自动转换为json
    response.send(str);//send方法只能接收字符串和buffer 结果是json格式字符串
})
//4、监听端口 启动服务
//启动服务器.lisen(端口号,(启动成功职之后的回调函数)) 端口号是80可以省略
app.listen(8000,()=>{
    console.log('8000启动成功')
})

这里的重点是:传递对象给客户端

客户端组成

<style>
			#result {
				width: 200px;
				height: 100px;
				border: 1px black solid;
			}
		</style>
	</head>
	<body>
		<div id="result"></div>

原始的直接传递数据(4步骤走)

window.onkeydown = function() {
				//4步走
				const result = document.getElementById('result');
				const xhr = new XMLHttpRequest();
              
				xhr.open('GET', 'http://127.0.0.1:8000/json-server');
				xhr.send();
				xhr.onreadystatechange = function() {
					if (xhr.readyState === 4) {
						if (xhr.status < 300 && xhr.status >= 200) {
							//xhr.response服务端返回的响应体
							result.innerHTML=xhr.response;
                           
						}
					}

				}

			}

接收到的内容是字符串 json格式

 

如何返回服务器时间 java 服务器返回json数据_如何返回服务器时间 java

 

手动设置数据转换 json转对象JSON.parse(xhr.response);

window.onkeydown = function() {
				//4步走
				const result = document.getElementById('result');
				const xhr = new XMLHttpRequest();
				xhr.open('GET', 'http://127.0.0.1:8000/json-server');
				xhr.send();
				xhr.onreadystatechange = function() {
					if (xhr.readyState === 4) {
						if (xhr.status < 300 && xhr.status >= 200) {
							//xhr.response服务端返回的响应体
			
                            //手动对数据进行转换 将json格式字符串转换为对象
                            let data=JSON.parse(xhr.response);
                            result.innerHTML=data.name;

            
						}
					}

				}

			}

如何返回服务器时间 java 服务器返回json数据_学习_02

 

 

自动设置数据转换(  //自动转换——借助xhr对象上的属性responseType, xhr.responseType='json';) 相应的内容直接转化成为对象数据

//4步走
				const result = document.getElementById('result');
				const xhr = new XMLHttpRequest();
                自动转换——借助xhr对象上的属性
                //设置响应体数据的类型
                xhr.responseType='json';
				xhr.open('GET', 'http://127.0.0.1:8000/json-server');
				xhr.send();
				xhr.onreadystatechange = function() {
					if (xhr.readyState === 4) {
						if (xhr.status < 300 && xhr.status >= 200) {

                            //自动转换——借助xhr对象上的属性
                            result.innerHTML=xhr.response.name;
            
						}
					}

				}

			}

如何返回服务器时间 java 服务器返回json数据_ajax_03