vue2使用axios post跳坑,封装成模块
終于將vue-resource替換成axios了,其中像application/x-www-form-urlencoded發送的頭信息以及返回的response結果這兩點都需要注意一下。
其實https://github.com/mzabriskie/axios也有說明的。因為我在vue-resource中使用了Vue.http.options.emulateJSON = true;,這種請求在發送頭信息時會將Content-Type改為application/x-www-form-urlencoded。
而若使用axios的話,就是坑爹的request payload,不是form data參數。
為了達到Content-Type這種效果作者提供了兩種方法。第一種使用new URLSearchParams(),但是這種方法兼容有點不好。
var params = new URLSearchParams(); params.append('param1', 'value1'); params.append('param2', 'value2'); axios.post('/foo', params);所以我使用的是第二種方法,使用node_modules文件夾中的qs模塊。因為我之前已經將ajax請求稍微封裝了一下(下面說的代碼基本都是在ajax.js中添加的),所以改動其實真不多。
安裝axios模塊就不說了,先將axios和qs引用進來。
然后將發送的請求參數外面使用qs.stringify進行包裹。
最后將接受的結果,提取正確的字段。(在vue-resource中正文件是response.body,而在axios中正文則是response.data。這個需要注意一下)
console.log(response.data) //這個打印出來的就是返回的結果其中response中則有一些請求狀態等等相關的參數,我這邊很少用到,所以就不列出來了。
只需上面三步,就完成了vue-resource到axios的轉換。同時解決了axios發送x-www-form-urlencoded的需求,特別方便吧~
另外貼上我整個ajax.js文件,中間用到了加密解密,可以無視一下。
可以完善的地方還有很多,歡迎拍磚~
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的vue2使用axios post跳坑,封装成模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue axios POST请求中参数以
- 下一篇: 最新的vue webpack模板没有de