Ajax学习:服务端响应Json格式数据的请求

在实际工作中,向服务端发送请求,服务端返回的结果大都是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格式

 

 

手动设置数据转换 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;

            
						}
					}

				}

			}

 

 

自动设置数据转换(  //自动转换——借助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;
            
						}
					}

				}

			}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值