赞
踩
理解:最早的浏览器页面在向服务器请求数据时,因为返回的是整个页面的数据,页面都会强制刷新一下,这对于用户来讲并不是很友好。
并且我们只是需要修改页面的部分数据,但是从服务器端发送的却是整个页面的数据,十分消耗网络资源。而我们只是需要修改页面的部分数据,也希望不刷新页面,因此异步网络请求就应运而生。
Ajax(Asynchronous JavaScript and XML):异步网络请求。Ajax能够让页面无刷新的请求数据。
实现ajax的方式有多种:
由于原生的XMLHttpRequest的配置和调用方法繁琐,故有了axios。
Axios: 可以理解为ajax i/o system,这不是一种新技术,本质上还是对原生XMLHttpRequest的封装,可用于浏览器和nodejs的HTTP客户端,只不过它是基于Promise的,符合最新的ES规范.
参考链接:http://www.axios-js.com/docs/index.html
脚手架目录npm i axios
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
我使用的2在线使用,没有安装。
先配置服务端,类型改成all,允许接受自定义头请求。
/ axios服务
app.all('/axios-server', (request, response) => {
//设置响应头
response.setHeader('Access-Control-Allow-Origin', '*');
response.setHeader('Access-Control-Allow-Headers', '*');
//响应一个数据
const data = { name: '799星辰' };
response.send(JSON.stringify(data));
})
//4.监听端口启动服务
app.listen(8000, () => {
console.log('服务已经启动,8000端口监听中...');
})
其中用到了json响应。
<body> <button>GET</button> <button>POST</button> <script> const btns = document.querySelectorAll('button'); btns[0].onclick = function(){ //GET 请求 axios.get('http://127.0.0.1:8000/axios-server',{ // url参数 params: { id: 100, vip: 7 }, // 请求头信息 headers: { name: 'shang', age: 18 } }).then(value => {//数据返回 console.log(value); }) } </script> </body>
注意一些细节,逗号、括号、params拼写,因为这些找了半天错误…
另:可用baseURL对url进行简化。
//配置baseURL
axios.defaults.baseURL = 'http://127.0.0.1:8000';
将原来完整的url修改为如下:
axios.get('/axios-server',{
});
数据返回是基于Promise的:
.then(value => {
console.log(value);
})
axios发送请求成功的值是一个封装好的响应对象。
我们想要的响应数据其实藏在response.data
中
注意格式书写,参数顺序。
btns[1].addEventListener('click', function() { //POST请求 axios.post('/axios-server',{ //请求体 name: 'ryy', psd: '123' },{ //url参数 params: { a:1, b:2 }, //请求头信息 headers: {name:'ryy',age:20} }) })
与jquary类似。按照报文的格式。
btns[1].onclick = function (){ axios({ // 请求方法 method: 'POST', // url url: 'http://127.0.0.1:8000/axios-server', // url参数 params: { vip:10, level:30 }, // 头信息 headers: { a:100, b:200 }, // 请求体 data: { username: 'admin', password: 'admin' } }).then((response) =>{ console.log('全部响应结果:',response); console.log('响应状态码:', response.status); console.log('响应状态字符串:',response.statusText); console.log('响应头信息:', response.headers); console.log('响应体:', response.data); }) }
这种方式发送请求非常nice,因为和报文非常贴切,而且语法简单。
axios本质上是对原生XMLHttpRequest的封装,不需要复杂的步骤,如下
现在只需要写axios.get
或 axios.post
或 通用请求。总之就是方便了许多~~
下一步要补一下 Promise 了…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。