vue插件vue-resource的使用筆記(小結(jié))
最近手頭有個(gè)小項(xiàng)目,打算用vue練個(gè)手,期間用到了vue的插件:vue-resource。下面是我使用這個(gè)插件的一些經(jīng)驗(yàn),算是給自己寫(xiě)的一個(gè)筆記,分享出來(lái)也希望和我遇到同樣坑的朋友可以借此踩坑而過(guò)~
在使用這個(gè)插件之前,當(dāng)然是先安裝啦:
npm i vue-resource --save
安裝讀條完畢,接下來(lái)便是在項(xiàng)目中引入:
import VueResource from 'vue-resource' Vue.use(VueResource);
如上所述,在入口文件中引入vue-resource即可。然后便是具體的使用了。vue-resource的使用和以前在JQ,ZEPTO等等中使用的$.ajax方式類(lèi)似,當(dāng)然,官方也提供了一系列的接口供小伙伴兒們使用,具體在此不做贅述,有興趣的小伙伴兒請(qǐng)移步:
Git傳送門(mén):https://github.com/pagekit/vue-resource/blob/master/README.md
具體的使用方式個(gè)中均有詳述。
最后,就是我自己遇到的一個(gè)坑,上代碼?。ú幌策^(guò)程的小伙伴兒可以看波代碼,然后直接跳到文章尾看結(jié)論。)
<script>
export default {
name: 'app',
data () {
return {
articles: []
}
},
created: function() {
this.$http.get('/api/user/order/list',
{
productType:"1",
pageNum:1,
pageLimit:8
},
{
headers:{
},
emulateJSON: true
}
).then((response) => {
this.articles = response.data.data.list;
}).catch(function(response) {
console.log(response)
});
}
}
</script>
這個(gè)是最初始的代碼,滿(mǎn)心歡喜打包運(yùn)行之后,發(fā)現(xiàn)控制臺(tái)報(bào)了個(gè)錯(cuò),說(shuō)list未定義!WTF!為此我去后臺(tái)看了下接口調(diào)用的情況,發(fā)現(xiàn)之前在調(diào)用接口時(shí)所傳的參數(shù)并沒(méi)有傳參成功,后來(lái)去網(wǎng)上多方搜查資料,發(fā)現(xiàn)把傳參方式修改成如下形式即可:
{
params: {
productType:"1",
pageNum:1,
pageLimit:8
}
}
和之前的傳參方式不同,這次我把參數(shù)加在了一個(gè)名為params的對(duì)象中,再次打包后上傳,發(fā)現(xiàn)接口調(diào)用成功!
在這里,我對(duì)params做一個(gè)解釋?zhuān)琾arams表示的是支持上傳多個(gè)可變參數(shù),至于為啥加了之后就可以了,我也不是非常清楚,如有大神看到,望不吝賜教O(píng)TZ。
OK,既然接口調(diào)用成功了,那么數(shù)據(jù)也應(yīng)該就如愿以?xún)數(shù)目梢垣@取到了,然而看到頁(yè)面上仍是一片空白,懵逼的我瞄了一眼控制臺(tái),發(fā)現(xiàn)此時(shí)控制臺(tái)上報(bào)了個(gè)錯(cuò),說(shuō)list未定義。WTF!為此我仔細(xì)的看了下接口的數(shù)據(jù)結(jié)構(gòu),發(fā)現(xiàn)這樣賦值并沒(méi)有問(wèn)題,可就是報(bào)錯(cuò)未定義。于是便有了如下猜想:
想法一:response數(shù)據(jù)返回有誤
針對(duì)這個(gè)想法,我console了下response,發(fā)現(xiàn)response返回正常,此想法被終結(jié)。
想法二:既然response返回沒(méi)有問(wèn)題,那問(wèn)題難道出在data上?
針對(duì)這個(gè)想法,我console了下response.data,發(fā)現(xiàn)response.data返回正常,返回的數(shù)據(jù)正是我接口中的數(shù)據(jù)!
驗(yàn)證完這兩個(gè)想法之后,我有點(diǎn)迷糊了,既然data沒(méi)有問(wèn)題,為什么獲取不到內(nèi)部的數(shù)據(jù)呢?帶著這個(gè)問(wèn)題,我去GOOGLE了一把,發(fā)現(xiàn)vue-resource的GET方法返回的response不僅僅只是單純的數(shù)據(jù),而是包含了請(qǐng)求頭信息,數(shù)據(jù)等等一系列的數(shù)據(jù),而vue-response也提供了提取數(shù)據(jù)的方法:response.json()。感覺(jué)抓到救命稻草的我迫不及待的試用的這個(gè)方法去獲取數(shù)據(jù),結(jié)果依舊無(wú)法獲取。
想法三:既然response.json()無(wú)法獲取,應(yīng)該有其他的方法可以獲取到。
為此,我又去參考了相應(yīng)的文檔,發(fā)現(xiàn)確實(shí)還有一個(gè)方法:response.body.data!如蒙大赦,天不亡我!
然。。。依舊失敗。多次的嘗試無(wú)果,略有煩躁,恰巧這個(gè)時(shí)候,同事問(wèn)了我一個(gè)問(wèn)題,也是接口的數(shù)據(jù)獲取不到,只不過(guò)是用的$.ajax的方法,后來(lái)發(fā)現(xiàn)是未定義dataType:JSON的問(wèn)題。說(shuō)到這兒,醍醐灌頂!是不是一開(kāi)始,data返回的就不是JSON格式,而是字符串的格式?于是,我在最開(kāi)始獲取數(shù)據(jù)的方式外,加了一層JSON.parse:
this.articles = JSON.parse(response.data).data.list;
滿(mǎn)懷期待的看著控制臺(tái),終于,獲取到數(shù)據(jù)。
結(jié)論:綜上所述,在使用vue-resource時(shí),需要留意最終獲取的數(shù)據(jù)是否為JSON格式,如若不是,需要先進(jìn)行JSON格式化才可以。vue-resource是否有設(shè)置dataType的入口,本人才疏學(xué)淺,還未得知,以后如果發(fā)現(xiàn),定會(huì)告知。如有大神看到,希望不吝賜教O(píng)TZ~
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Vue添加請(qǐng)求攔截器及vue-resource 攔截器使用
- vue resource post請(qǐng)求時(shí)遇到的坑
- vue-cli項(xiàng)目如何使用vue-resource獲取本地的json數(shù)據(jù)(模擬服務(wù)端返回?cái)?shù)據(jù))
- Vue2.0利用vue-resource上傳文件到七牛的實(shí)例代碼
- Vue resource中的GET與POST請(qǐng)求的實(shí)例代碼
- 詳解vue前后臺(tái)數(shù)據(jù)交互vue-resource文檔
- vue-resource 攔截器(interceptor)的使用詳解
- Vue中的vue-resource示例詳解
相關(guān)文章
使用Vue3創(chuàng)建多布局系統(tǒng)的三種方法
布局是中大型網(wǎng)站或應(yīng)用的基礎(chǔ),假設(shè)你正在創(chuàng)建一個(gè)網(wǎng)頁(yè)應(yīng)用,它包括主頁(yè)、營(yíng)銷(xiāo)頁(yè)面和應(yīng)用頁(yè)面,你不會(huì)想要為每一頁(yè)重復(fù)所有的工作,對(duì)吧,與Nuxt不同,Vue 3并沒(méi)有內(nèi)置的布局系統(tǒng),但是別擔(dān)心,這里將向你展示3種簡(jiǎn)單的方法來(lái)實(shí)現(xiàn)這一點(diǎn),需要的朋友可以參考下2023-08-08
使用vscode格式化文檔無(wú)效的解決辦法(vue代碼格式化文檔無(wú)效)
這篇文章主要給大家介紹了關(guān)于使用vscode格式化文檔無(wú)效的解決辦法,也就是vue代碼格式化文檔無(wú)效,這是最近突然遇到的一個(gè)問(wèn)題,這里給大家介紹一下解決的辦法,需要的朋友可以參考下2023-08-08
Vuex Store 數(shù)據(jù)在頁(yè)面刷新后丟失的解決方法
當(dāng)我們使用 Vue.js 和 Vuex 進(jìn)行狀態(tài)管理時(shí),一個(gè)常見(jiàn)的問(wèn)題是頁(yè)面刷新會(huì)導(dǎo)致 Vuex store 中的數(shù)據(jù)丟失,本文將詳細(xì)介紹解決 Vuex Store 數(shù)據(jù)在頁(yè)面刷新后丟失的方法,感興趣的朋友一起看看吧2024-08-08
this.$router.push攜帶參數(shù)跳轉(zhuǎn)頁(yè)面的實(shí)現(xiàn)代碼
這篇文章主要介紹了this.$router.push攜帶參數(shù)跳轉(zhuǎn)頁(yè)面,this.$router.push進(jìn)行頁(yè)面跳轉(zhuǎn)時(shí),攜帶參數(shù)有params和query兩種方式,本文結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下2023-04-04
基于Vue+element-ui 的Table二次封裝的實(shí)現(xiàn)
這篇文章主要介紹了基于Vue+element-ui 的Table二次封裝的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
如何用vue2+element-ui實(shí)現(xiàn)多行行內(nèi)表格編輯
最近開(kāi)發(fā)項(xiàng)目,關(guān)于表格的數(shù)據(jù)操作比較多,這個(gè)地方個(gè)人覺(jué)得比較難搞,特此記錄一下,這篇文章主要給大家介紹了關(guān)于如何用vue2+element-ui實(shí)現(xiàn)多行行內(nèi)表格編輯的相關(guān)資料,需要的朋友可以參考下2024-08-08
解決VUE3 keep-alive頁(yè)面切換報(bào)錯(cuò)parentComponent.ctx.deactivate
這篇文章主要介紹了解決VUE3 keep-alive頁(yè)面切換報(bào)錯(cuò)parentComponent.ctx.deactivate is not a function的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
Vue實(shí)現(xiàn)簡(jiǎn)易購(gòu)物車(chē)頁(yè)面
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)簡(jiǎn)易購(gòu)物車(chē)頁(yè)面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12

