axios的兼容性问题
1、axios在PC端浏览器的兼容性问题
axios支持IE8+,但原理是基于promise之上实现的,因此会存在不兼容IE的问题。
trident内核的浏览器下会报:vuex requires a Promise polyfill in this browser
解决方案:
(1)、首先安装 babel-polyfill
,来解决IE不支持 promise
对象的问题
npm install babel-polyfill -s
(2)、安装成功以后需要在 main.js
中引入 babel-polyfill
import 'babel-polyfill'
一般会配置 webpack.base.config.js
中 entry
module.exports = { context: path.resolve(__dirname, '../'), entry: { app: ["babel-polyfill", "./src/main.js"] // app: './src/main.js' }, }
2、axios在安卓低版本兼容性处理
在较低版本的安卓手机中发现发现封装的axios请求无效,主要原因还是低版本的安卓手机无法使用promise
注意:安卓4.3以下的手机不支持axios的使用,无法使用promise,加上 polyfill就可以了。
解决方案: (1)、项目中安装 es6-promise
npm install es6-promise -s
(2)、引入 es6-promise
import promise from 'es6-promise'
(3)、注册 es6-promise
(一定要在axios之前注册)
// 注意: es6-promise 一定要在 axios 请求 之前注册 promise.polyfill() 或者 require('es6-promise').polyfill();
Browser(浏览器) cdn方式引入qs库的使用方法
Browser cdn方式引入qs库使用
普通html页面使用axios post提价数据需要处理提交的数据,一般用到qs库
今天刚好用到,记录下来
<script src="https://cdn.bootcss.com/qs/6.7.0/qs.min.js"></script>
<script src="https://cdn.bootcss.com/axios/0.18.0/axios.min.js"></script>
<html>
<body>
<div>
</div>
<script>
// 一般引入qs库都赋值为qs,不过浏览器全局引入的是 window.Qs对象,
// 所以直接用 qs.stringify() 会报 qs undefined
var qs = Qs
// 配置post的请求头
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
// qs.stringify() 这里可以做一下封装
axios.post('url', qs.stringify({
id: 1,
name: 'zhangsan'
})).then(function(res) {
// 返回 Promise对象数据
})
</script>
</body>
</html>