Ajax常用封装库——Axios的使用

 更新时间:2021年05月06日 17:03:58   作者:小白可别不举铁  
这篇文章主要介绍了Ajax常用封装库——Axios的使用,帮助大家更好的理解和学习网络编程,感兴趣的朋友可以了解下

Axios 是目前应用最为广泛的 AJAX 封装库

Axios的特性有:

  • 从浏览器中创建 XMLHttpRequests
  • 从 node.js 创建 http 请求
  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换 JSON 数据
  • 客户端支持防御 XSRF

使用axios时,需要通过使用script标签引入:https://unpkg.com/axios/dist/axios.min.js
axios的中文网链接:Axios中文网

Axios API

向axios()传递相关配置来创建请求;

  • axios(对象格式的配置选项)
  • axios(url,config)

常用的配置项

  • url:用于请求的服务器URL
  • method:创建请求时使用的方法
  • baseURL:传递相对URL前缀,将自动加在url前面
  • headers:即将被发送的自定义请求头
  • params:即将与请求一起发送的URL参数
  • data:作为请求主体被发送的数据
  • timeout:指定请求超时的毫秒数(0表示无超时时间)
  • responseType:表示服务器响应的数据类型,默认“json”
axios().then(function(response){
 //正常请求的响应信息对象response
})
.catch(function(error){
 //捕获的错误
})

代码展示如下:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
 //使用axios方法    post请求
axios({
         url:"/pinglun",
         method:"post",
         baseURL:"http://localhost:3000",
         header:{
               "Content-Type":"application/json"
         },
        data:{
            "content":"well",
            "lyId":4
         },
    timeout:1000,
  }).then(function(res){
       console.log(res.data);
   }).catch(function(error){
       console.log(error);
})
 </script>

axios 全局默认值的配置

axios.defaults.baseURL = 'https://xxx.xxx.com';
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencode'

axios拦截器:在请求或响应被then或catch处理前拦截它们

axios 的请求拦截器

//axios 的请求拦截器
axios.interceptors.request.use(function(config){
 //配置项config
  config.params = {
        id:2 //对配置项中的params进行更改,筛选id=2
    }
   return config;//要有返回值
})
    
//axios 方法
axios("http://localhost:3000/liuyan")
.then(function(res){
      console.log(res.data);
 })
.catch(function(error){
      console.log(error);
})
    
//axios 方法
axios("http://localhost:3000/pinglun")
.then(function (res) {
    console.log(res.data);
})
.catch(function (error) {
     console.log(error);
})
//多个axios方法也可以拦截

axios 的响应拦截器

//axios 的响应拦截器
axios.interceptors.response.use(function(response){
     return(response.data);//response里有很多值,选择data即可
})
    
//axios 方法
axios("http://localhost:3000/liuyan")
.then(function (res) {
      console.log(res);//response那里拦截了,已经将数据传成data了
})
.catch(function (error) {
     console.log(error);
})

axios的快速请求方法

 axios.get(url[,config])

//axios.get(url[,config])
    
axios.get("http://localhost:3000/liuyan?id=2")
 .then(function(res){
     console.log(res.data);
})
    
axios.get("http://localhost:3000/liuyan",{
   params:{
        id:1
   }
}).then(function(res){
    console.log(res.data);
})

 axios.post(url[,data[,config]])

//axios.post(url[,data[,config]]) , post请求,添加数据
axios.post("http://localhost:3000/users",{
    name:"laowang",
    age:23,
    class:1
})

 axios.delete(url[,config])

//axios.delete(url[,config])
axios.delete("http://localhost:3000/liuyan",{
   params:{
         id:5
    }
})

 axios.put(url[,data[,config]])

//axios.put(url[,data[,config]])
axios.put("http://localhost:3000/liuyan",{
    name:"wangshisan",
    id:11
})

XMLHttpRequest2.0,html5对XMLHttpRequest类型全面升级,使其变得更加易用、强大。

onload / onprogress

  XML.onload 事件:只在请求完成时触发

  XML.onprogress 事件:只在请求进行中触发

//xhr.onload事件:只在请求完成时触发
//xhr.onprogress事件:只在请求进行中触发
var xhr = new XMLHttpRequest();
xhr.open("get","http://localhost:3000/pinglun");
xhr.onload = function(){
     console.log("load:",this.readyState);
};
xhr.onprogress = function(e){
    console.log("progress:",this.readyState);
    //在周期性请求过程中,接收到的数据个数
     console.log(e.loaded);
     //接收数据的总个数
     console.log(e.total);
}
xhr.send(null);

response属性

  以对象的形式表述响应体,其类型取决于responseType的值。根据responseType的值,来通过特定的类型请求数据。

  responseType要在调用open()初始化请求之后,在调用send()发送请求到服务器之前设置才会有效。

//XMLHttpRequest之前的response返回
//responseText
// responseXml
var xhr = new XMLHttpRequest();
xhr.open("get","http://localhost:3000/pinglun");
xhr.onload = function(){
  var data = JSON.parse(this.responseText);
          console.log(data);
   }
xhr.send(null);
           
// xhr2.0新增的response属性 
// response
// responseType
var xhr = new XMLHttpRequest();
xhr.open("get","http://localhost:3000/liuyan");
xhr.responseType = "json";
xhr.onload = function(){
    console.log(this.response);
}
xhr.send(null)

以上就是Ajax常用封装库——Axios的使用的详细内容,更多关于Ajax封装库Axios的使用的资料请关注脚本之家其它相关文章!

相关文章

  • IE9 IE8 ajax跨域问题的快速解决方法

    IE9 IE8 ajax跨域问题的快速解决方法

    下面小编就为大家带来一篇IE9 IE8 ajax跨域问题的快速解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • Lavarel框架中使用ajax提交表单的方法

    Lavarel框架中使用ajax提交表单的方法

    因为laravel以post形式提交数据时候需要加{{csrf_field()}}防止跨站攻击,下面通过本文给大家分享lavarel框架中使用ajax提交表单的方法,一起看看吧
    2016-12-12
  • 解决ajax传过来的值后台接收不到的问题

    解决ajax传过来的值后台接收不到的问题

    今天小编就为大家分享一篇解决ajax传过来的值后台接收不到的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • AJAX跨域请求之JSONP获取JSON数据

    AJAX跨域请求之JSONP获取JSON数据

    JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。
    2015-09-09
  • jQuery中ajax - get() 方法实例详解

    jQuery中ajax - get() 方法实例详解

    在JQuery中可以使用get,post和ajax方法给服务器端传递数据,接下来,通过本篇文章给大家介绍jquery中ajax-get()方法实例详解,有需要的朋友可以参考下
    2015-09-09
  • 使用AjaxFileUpload.js实现异步文件上传示例

    使用AjaxFileUpload.js实现异步文件上传示例

    AjaxFilleUpload.js可以使得我们不用去管理Iframe的一系列操作,也不用影响我们的页面结构,实现异步的文件提交
    2014-05-05
  • 全面解析Ajax综合应用(全)

    全面解析Ajax综合应用(全)

    AJAX = 异步 JavaScript 和 XML,AJAX 是一种用于创建快速动态网页的技术。本文给大家带来了全面解析Ajax综合应用大全,非常不错具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-06-06
  • 表单上传功能实现 ajax文件异步上传

    表单上传功能实现 ajax文件异步上传

    这篇文章主要为大家详细介绍了表单上传功能和文件上传功能实现,ajax文件异步上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 服务端配置实现AJAX跨域请求

    服务端配置实现AJAX跨域请求

    这篇文章主要介绍了服务端配置实现AJAX跨域请求的相关资料,需要的朋友可以参考下
    2015-02-02
  • 解决ajax的delete、put方法接收不到参数的问题方法

    解决ajax的delete、put方法接收不到参数的问题方法

    今天小编就为大家分享一篇解决ajax的delete、put方法接收不到参数的问题方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08

最新评论