Vue.js Ajax
Posted ---空白---
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue.js Ajax相关的知识,希望对你有一定的参考价值。
1.封装AJAX模块
(1)在src目录下新建api目录,新建ajax.js,写入
(2)引入axios
(3)定义ajax函数,并暴漏出去
(4)ajax函数中调用axios发送请求,并将返回的promise对象 return出去
// 引入axios
import axios from 'axios'
// 暴露ajax
// ajax接收3个参数:url,参数,请求方法
export default function ajax (url='',data={},type='get') {
let promise
if(type.toLowerCase() === 'get'){
//如果是get请求,则将参数拼接到url后面
let dataStr = ''
Object.keys(data).forEach(key => {
// key=value&
dataStr += key + '=' +data[key] + '&'
})
if(dataStr !== ''){
// 去除最后一个&
dataStr = dataStr.substring(0,dataStr.lastIndexOf('&'))
// 将参数拼接到url后面
url = url + '?' + dataStr
}
// 发送get请求,返回一个promise对象
promise = axios.get(url)
}else {
// 发送post请求,返回一个promise对象
promise = axios.post(url,data)
}
// 将promise返回
return promise
}
(5)引入该模块并使用
// App.vue
<script>
import ajax from './api/ajax.js'
export default {
mounted () {
const url = 'https://api.github.com/search/repositories'
ajax(url,{q:'vue',sort:'stars'}).then(res => {
console.log(res.data.items[0])
}).catch(error => {
alert('请求失败')
})
}
}
</script>
2.配置代理解决跨域问题
打开config/index.js文件,找到proxyTable属性进行
proxyTable: {
'/api': { // 匹配以/api开头的所有路径
target: 'http://localhost:4000', // 代理的后端api基础路径
changeOrigin: true, // 支持跨域
pathRewrite: { // 重写路径,去掉路径中开头的'/api'
'^/api': ''
// '^/api': 'api'
}
}
}
如果要访问后台api地址,例如:http://localhost:4000/List
axios.get('/api/List') // 会 自动替换成 http://localhost:4000/List
如果配置成这样:
pathRewrite: {
'^/api': 'api'
}
访问后台地址就应该是 http://localhost:4000/api/List
以上是关于Vue.js Ajax的主要内容,如果未能解决你的问题,请参考以下文章