Vue-resource實現(xiàn)ajax請求和跨域請求示例
vue-resource是Vue提供的體格http請求插件,如同jQuery里的$.ajax,用來和后端交互數(shù)據(jù)的。
在使用時,首先需要安裝vue-resource插件
1.在項目跟目錄上安裝:
npm install vue-resource
2.引入resource插件
import VueResource from 'vue-resource'; Vue.use(VueResource)
3.發(fā)送請求:
this.$http.get("http://www.vrserver.applinzi.com/aixianfeng/apihome.php").then(function(res){ console.log(res) })
ES6寫法:
this.$http.get('url', [options]).then((res) => { // 處理成功的結(jié)果}, (res) => { // 處理失敗的結(jié)果});
在發(fā)送請求后,使用then方法來處理響應(yīng)結(jié)果,then方法有兩個參數(shù),第一個參數(shù)是響應(yīng)成功時的回調(diào)函數(shù),第二個參數(shù)是響應(yīng)失敗時的回調(diào)函數(shù)。
then方法的回調(diào)函數(shù)也有兩種寫法,第一種是傳統(tǒng)的函數(shù)寫法,第二種是更為簡潔的ES 6的Lambda寫法:
POST請求:
this.$http.post("http://www.vrserver.applinzi.com/aixianfeng/apihome.php",{name:"abc"},{emulateJSON:true}).then( function (res) { // 處理成功的結(jié)果 alert(res.body); },function (res) { // 處理失敗的結(jié)果 } );
JSONP請求:
new Vue({ ready() { this.$http.jsonp('/url', {name:"abc"}) .then(function (res){ console.log(res) }, function (res) { console.log(res) }); } })
吐槽一下,現(xiàn)在應(yīng)該沒有用到JSON的了吧,有的話真呵呵呵了。
支持的HTTP方法
vue-resource的請求API是按照REST風(fēng)格設(shè)計的,它提供了7種請求API:
- get(url, [options])
- head(url, [options])
- delete(url, [options])
- jsonp(url, [options])
- post(url, [body], [options])
- put(url, [body], [options])
- patch(url, [body], [options])
除了jsonp以外,另外6種的API名稱是標(biāo)準(zhǔn)的HTTP方法。當(dāng)服務(wù)端使用REST API時,客戶端的編碼風(fēng)格和服務(wù)端的編碼風(fēng)格近乎一致,這可以減少前端和后端開發(fā)人員的溝通成本。
客戶端請求方法 | 服務(wù)端處理方法 |
---|---|
this.$http.get(...) | Getxxx |
this.$http.post(...) | Postxxx |
this.$http.put(...) | Putxxx |
this.$http.delete(...) | Deletexxx |
options對象
發(fā)送請求時的options選項對象包含以下屬性:
參數(shù) | 類型 | 描述 |
---|---|---|
url | string | 請求的URL |
method | string | 請求的HTTP方法,例如:'GET', 'POST'或其他HTTP方法 |
body | Object, FormDatastring | request body |
params | Object | 請求的URL參數(shù)對象 |
headers | Object | request header |
timeout | number | 單位為毫秒的請求超時時間 (0 表示無超時時間) |
before | function(request) | 請求發(fā)送前的處理函數(shù),類似于jQuery的beforeSend函數(shù) |
progress | function(event) | ProgressEvent回調(diào)處理函數(shù) |
credientials | boolean | 表示跨域請求時是否需要使用憑證 |
emulateHTTP | boolean | 發(fā)送PUT, PATCH, DELETE請求時以HTTP POST的方式發(fā)送,并設(shè)置請求頭的X-HTTP-Method-Override |
emulateJSON | boolean | 將request body以application/x-www-form-urlencoded content type發(fā)送 |
emulateHTTP的作用
如果Web服務(wù)器無法處理PUT, PATCH和DELETE這種REST風(fēng)格的請求,你可以啟用enulateHTTP現(xiàn)象。啟用該選項后,請求會以普通的POST方法發(fā)出,并且HTTP頭信息的X-HTTP-Method-Override屬性會設(shè)置為實際的HTTP方法。
Vue.http.options.emulateHTTP = true;
emulateJSON的作用
如果Web服務(wù)器無法處理編碼為application/json的請求,你可以啟用emulateJSON選項。啟用該選項后,請求會以application/x-www-form-urlencoded作為MIME type,就像普通的HTML表單一樣。
Vue.http.options.emulateJSON = true;
response對象
response對象包含以下屬性:
方法 | 類型 | 描述 |
---|---|---|
text() | string | 以string形式返回response body |
json() | Object | 以JSON對象形式返回response body |
blob() | Blob | 以二進制形式返回response body |
屬性 | 類型 | 描述 |
ok | boolean | 響應(yīng)的HTTP狀態(tài)碼在200~299之間時,該屬性為true |
status | number | 響應(yīng)的HTTP狀態(tài)碼 |
statusText | string | 響應(yīng)的狀態(tài)文本 |
headers | Object | 響應(yīng)頭 |
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
elementui如何解決el-table重復(fù)寫loading問題
這篇文章主要介紹了elementui如何解決el-table重復(fù)寫loading問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08vue3中安裝并使用CSS預(yù)處理器Sass的方法詳解
Sass是一種CSS預(yù)處理器,它擴展了CSS的功能,提供了更高級的語法和特性,例如變量、嵌套、混合、繼承和顏色功能等,這些特性可以幫助開發(fā)者更高效地管理和維護樣式表,本文介紹vue3中安裝并使用CSS預(yù)處理器Sass的方法,感興趣的朋友一起看看吧2024-01-01Ant Design Upload 文件上傳功能的實現(xiàn)
這篇文章主要介紹了Ant Design Upload 文件上傳功能的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04vue實現(xiàn)todolist功能、todolist組件拆分及todolist的刪除功能
這篇文章主要介紹了vue實現(xiàn)todolist功能、todolist組件拆分及todolist的刪除功能,需要的朋友可以參考下2019-04-04