vue2.0 axios前后端数据处理

目前主流的 Vue 项目,都选择 axios 来完成 ajax 请求,而大型项目都会使用 Vuex 来管理数据。

前言: 

使用 cnpm 安装 axios

cnpm install axios -S

安装其他插件的时候,可以直接在 main.js 中引入并 Vue.use(),但是 axios 并不能 use,只能每个需要发送请求的组件中即时引入

为了解决这个问题,是在引入 axios 之后,修改原型链具体的实施请往下看~

 

改写原型链

首先在 main.js 中引入 axios

import axios from 'axios'

这时候如果在其它的组件中,是无法使用 axios 命令的。但如果将 axios 改写为 Vue 的原型属性,就能解决这个问题

Vue.prototype.$ajax = axios

在 main.js 中添加了这两行代码之后,就能直接在组件的 methods 中使用 $ajax 命令

复制代码
methods: {
  but_ajax() {
    this.$ajax({
      method: 'post',
      url: 'http://192.168.0.113:8080/llhb/m/requirement/allCategor',
      params: {                    //需要发送的数据
        name: 'zhangwenwu2',
        age: '15'
      }
   })
   //请求成功后执行then          如果直接在里面访问 this,无法访问到 Vue 实例,this指向发生了变化。建议使用箭头函数,下面有讲
   .then(function (response) {
        console.log(response);   //处理后台返回的数据
     }) 
   //请求失败后执行catch
   .catch(function(err){
        console.log(err)
     })
}
复制代码

附录:配置 axios 

上面封装的方法中,使用了 axios 的三个配置项,实际上只有 url 是必须的,完整的 api 可以参考使用说明

为了方便,axios 还为每种方法起了别名,比如上面的 saveForm 方法等价于:

axios.post('/user', context.state.test02)

完整的请求还应当包括 .then 和 .catch

.then(function(res){
  console.log(res)
})
.catch(function(err){
  console.log(err)
})

当请求成功时,会执行 .then,否则执行 .catch

这两个回调函数都有各自独立的作用域,如果直接在里面访问 this,无法访问到 Vue 实例,this指向发生了变化。

这时只要添加一个 .bind(this) 就能解决这个问题,或者使用箭头函数即可

.then(function(res){
  console.log(this.data)
}.bind(this))

.then((res) => {
  console.log(this.data)
})

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴能解答您的问题。关于您提到的问题,我可以向您提供一些基础信息和建议,但是需要提醒的是,我并不是一个完全精通于技术领域的AI,因此我的回答仅供参考。 针对您的问题,我们首先需要了解什么是vue2.0axiosVue.js是一个前端框架,而axios则是一个用于发送http请求的JavaScript库。在Vue.js中使用axios可以方便地向服务器发送请求,获取数据等。 对于二次封装axios,常见的做法是在Vue.js中创建一个Api.js文件,将需要用到的接口全部封装成方法,以便在Vue组件中调用。这些方法使用axios发送请求,并返回Promise对象。 下面是一个简单的使用axios发送GET请求的代码示例: ``` import axios from 'axios' const baseUrl = 'https://api.example.com/' export function getUser(userId) { return axios.get(`${baseUrl}/users/${userId}`) } ``` 使用时,可以在Vue组件中调用`getUser`方法,并使用Promise的语法进行后续处理: ``` import { getUser } from './api.js' getUser(123) .then(response => console.log(response.data)) .catch(error => console.error(error)) ``` 值得注意的是,由于axios发送的http请求是异步的,因此在处理返回结果时需要使用Promise的语法。同时,在进行二次封装时,应注意不要将敏感信息暴露到前端代码中,以保护用户隐私安全。 希望我的回答能够对您有所帮助,如有其他问题,欢迎继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值