vue2项目使用axios发送请求

摘要:
目前主流的Vue项目,都选择axios来完成ajax请求,下面来具体介绍一下axios的使用。项目中安装axioscnpminstallaxios-S每个需要请求的组件中都需要引入axios,如果觉得麻烦,可以axios改写成Vue的原型属性,在使用的时候,就不需要每个组件都去引用。具体配置代码://配置代理proxyTable:{'/api':{//api为匹配项target:'http://www.liuliangu.cn:8067',//设置代理目标changeOrigin:true,pathRewrite:{//重写路径'^/api':'/'}}}组件中请求的具体代码:this.$http.post.then.catch;注意在vue2中使用axios,我们请求的参数仍为json类型,是并没有序列化的。

前言:在Vue1.0的时候有一个官方推荐的 ajax 插件vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource。

目前主流的 Vue 项目,都选择axios来完成 ajax 请求,下面来具体介绍一下axios的使用。

项目中安装axios

cnpm install axios -S

每个需要请求的组件中都需要引入axios,如果觉得麻烦,可以axios改写成Vue的原型属性,在使用的时候,就不需要每个组件都去引用。

将axios改写成Vue的原型属性

1、在main.js中引入axios

import axios from 'axios'

2、写成vue的原型属性

Vue.prototype.$http = axios

在main.js中添加这两行代码之后,就能直接在组件中使用axios了

使用方式

this.$http.post(url,params).then(function (response) {
//请求成功
}).catch(function (error) {
//请求失败
});

实际应用

假设我们需要请求的接口是:http://www.liuliangu.cn:8067/index/data/

如果是开发环境,我们请求的接口如果存在跨域问题,需要配置代理

在vue-cli的config文件下面的index.js里有一个参数叫proxyTable

配置proxyTable的时候本地会虚拟一个服务端接收你的请求并代你发送该请求,这样就不会有跨域问题了,当然这只适用于开发环境。

具体配置代码:

// 配置代理
proxyTable: {
'/api':{ // api为匹配项
target:'http://www.liuliangu.cn:8067', // 设置代理目标
changeOrigin: true,
pathRewrite: { // 重写路径
'^/api': '/'
}
}
}

组件中请求的具体代码:

this.$http.post('/api/index/data/', qs.stringify({
jobName: 'getSiteProductAnalysis',
DateType: this.DateType
})).then(function (response) {
console.log(response)
}).catch(function (error) {
console.log(error);
});

注意

在vue2中使用axios,我们请求的参数仍为json类型,是并没有序列化的。我们需要使用querystring解决该问题

需要先引入 import qs from 'qs';

传入参数的时候转下格式,qs.stringify(data)

这样,我们就能正常请求访问到数据了。

生成环境下,生产代码应该使用npm run build然后把dist放到nginx服务器上,在nginx上配置代理地址。

免责声明:文章转载自《vue2项目使用axios发送请求》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇tomcat配置多个web网站的配置详解python新建txt文件,并逐行写入数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue按enter键刷新页面 使用@submit.native.prevent阻止表单默认提交,添加在form标签上

情景描述:当使用@keyup.enter.native来使输入搜索内容后,按下enter键就触发搜索。会发现一个奇怪的现象:当按下enter键时,先是根据输入的内容搜索了一次,紧接着又全局刷新了一次页面。 原因分析:当一个表单下,如果只有一个文本框时,按下回车将会触发表单的提交事件。 原代码如下: <el-form :inline="true" :...

element ui Cascader 级联选择器 关闭tag时报错 :vue.runtime.esm.js?2b0e:619 [Vue warn]: Error in callback for watcher "value": "TypeError: Cannot read property 'level' of null"

情况说明:多选后,点击关闭tag的按钮,会出现如下报错。   经过使用官网列子,及数据。发现删除tag并不会出现这个错误。经过对比,唯一不同的是官网的value 是字符串对象,而我使用的id是数字。将id改成字符串格式后,问题就解决了。 ☀ ░ 标记一下░  ☀...

[javascript] js websocket断线重连库ReconnectingWebSocket

websocket在连接的时候 , 受网络影响 或者长时间没有通信被服务端关闭 , 都需要断线重连机制 自己写断线重连比较麻烦 , 可以使用这个js库 ReconnectingWebSocket.js  https://github.com/joewalnes/reconnecting-websocket/    直接下载min文件 , 引入就可以 使用的...

vue 记录 mode:history 模式 踩过的坑

先上官网文档地址 https://router.vuejs.org/zh/guide/essentials/history-mode.html 由于公司内容原因没有https的测试域名 所以在正式接口后加了个、/t/  eg:https:xxxx.com  测试接口域名====>https:xxxx.com/t 1.需要在路由文件  router /...

vue中的watch监听数据变化以及watch中各属性详解

1、watch使用的几种方法(1)通过watch监听data数据的变化,数据发生变化时,就会打印当前的值 watch: { data(val, newval) { console.log(val) console.log(newval) } } (2)通过watch监听docData数据的变化...

记一次真实的webpack优化经历

前言 公司目前现有的一款产品是使用vue v2.0框架实现的,配套的打包工具为webpack v3.0。整个项目大概有80多个vue文件,也算不上什么大型项目。 只不过每次头疼的就是打包所耗费的时间平均在一分钟左右,而且打包后有几个文件显示为【big】,也就是文件体积过大。 最近就想着捣鼓一下,看能不能在此前的基础上做一些优化,顺带记录下来分享给大家。...