1. 程式人生 > >關於vue中axios的資料data格式問題

關於vue中axios的資料data格式問題

**# 注:網上很多都是使用post傳送的例子,但是我使用過程當中,就是引數有問題,一直報引數無法present的問題,後來看到這篇部落格,需要引入QS對引數進行轉換,且要設定Content-Type,這樣就可以了,特別注意QS的功能:****`第一個坑:使用axios的then之後,要給data賦值,使用this報錯,以下是原因和解決方案:`**

> 第一種方法

在then 這個裡邊的賦值方法this.followed = response.data.followed會出現報錯,什麼原因呢?在Google上查了下,原來是在 then的內部不能使用Vue的例項化的this, 因為在內部 this 沒有被繫結。  可以看下 Stackoverflow 的解釋:  In option functions like data and created, vue binds this to the view-model instance for us, so we can use this.followed, but in the function inside then, this is not bound.  So you need to preserve the view-model like (created means the component's data structure is assembled, which is enough here, mounted will delay the operation more):  解決方法:      created() {         var self = this;         axios.post('/api/question/follower', {             'question':this.question,             'user':this.user         }).then(function(response){             // console.log(response.data);             self.followed = response.data.followed;         })      },  或者我們可以使用 ES6 的 箭頭函式arrow function,箭頭方法可以和父方法共享變數 :   created() {         axios.post('/api/question/follower', {             'question':this.question,             'user':this.user         }).then((response) => {             this.followed = response.data.followed;         })      }> 第二種方法在研究中我們發現我們可以講拼接進介面中,但是在企業級開發中這樣的書寫方法並不規範,所以在這個時候我們需要將axios的寫法規範,在一般寫法中我們$axios{  urls:baseurl,  methond:base,  data:{}  headers:[xx:xxxx]}但是我們可以在每個檔案中對config進行編譯  例如:import Qs from 'qs' var vm = thisvar data = Qs.stringify({"name":"痞子達"}); this.$http.post(vm.testUrl,data, {headers:{'Content-Type':'application/x-www-form-urlencoded'}}).then((response)=>{     alert(response.data.msg);})`這個的使用前提是  我們需要 引入axios中的qs去改變 資料的格式`
因此 為了避免這樣的重複的書寫動作 ,我們會在入口檔案中進行公共寫法的編譯在axios的官方文件中指出(https://www.kancloud.cn/yunye/axios/234845)這裡的主要操作是對  請求過程中的  then或者 catch   進行攔截 (也就是在請求傳送前對我們的data資料進行  轉化 )官方文件中給出了 兩種解決方法 我們使用   axios.create方法可以使用自定義配置新建一個 axios 例項axios.create([config])var instance = axios.create({  baseURL: 'https://some-domain.com/api/',  timeout: 1000,  headers: {'X-Custom-Header': 'foobar'}});// `baseURL` 將自動加在 `url` 前面,除非 `url` 是一個絕對 URL。  // 它可以通過設定一個 `baseURL` 便於為 axios 例項的方法傳遞相對 URL  baseURL: 'https://some-domain.com/api/',  // `transformRequest` 允許在向伺服器傳送前,修改請求資料  // 只能用在 'PUT', 'POST' 和 'PATCH' 這幾個請求方法  // 後面陣列中的函式必須返回一個字串,或 ArrayBuffer,或 Stream  transformRequest: [function (data) {    // 對 data 進行任意轉換處理    return data;  }],  // `transformResponse` 在傳遞給 then/catch 前,允許修改響應資料  transformResponse: [function (data) {    // 對 data 進行任意轉換處理    return data;  }],  // `headers` 是即將被髮送的自定義請求頭  headers: {'X-Requested-With': 'XMLHttpRequest'},在這裡改變 具體程式碼如下**var instance = axios.create({  //config裡面有這個transformRquest,這個選項會在傳送引數前進行處理。  //這時候我們通過Qs.stringify轉換為表單查詢引數      transformRequest: [function (data) {          data = Qs.stringify(data);          return data;      }],      headers:{'Content-Type':'application/x-www-form-urlencoded'}})**同時需要在   vue.use(vueaxios , axios )前  例項化 一個   vue.use(vueaxios,instance)這裡的方法  直接影響了整個  instance的 使用

參考文章

引用文章(https://blog.csdn.net/nihaoqiulinhe/article/details/79084755)中關於資料格式不正確情況下修改資料格式的方法。大笑

相關推薦

vueaxios資料請求 get和post

axios(基於 promise 的 HTTP 庫) <script src="./vue.js"></script> <!-- 1. 引入axios檔案 --> <script src="./axios.js"></script&g

關於vueaxios資料data格式問題

**# 注:網上很多都是使用post傳送的例子,但是我使用過程當中,就是引數有問題,一直報引數無法present的問題,後來看到這篇部落格,需要引入QS對引數進行轉換,且要設定Content-Type,這樣就可以了,特別注意QS的功能:****`第一個坑:使用axios的th

自己模擬資料介面,vueaxios獲取資料

我先說我的操作步驟:(前提是要有node.js沒有的npm吧) 第一步:新建一個資料夾,命名隨便;然後在檔案裡開啟命令列輸入以下命令 npm init -y npm i express 資料夾就會多一個node_moudules檔案和兩個json檔案   接下

Vueaxios的使用技巧配置項詳解

www 模塊 模擬 傳遞 all 字符串 給定 ans 必須 使用axios首先要下載axios模塊包 npm install axios --save 其次需要在使用的文件中引入 import axios from ‘axios‘ 一、調用axio

Vueaxios 表單POST提交

剛開始使用Vue,裡面的坑是一個接一個,今天就遇到一個axios POST傳參的問題。 因為後端要求是按表單提交的形式給他資料, 我需要在請求中傳遞引數,然後按官方文件的格式開始操作,程式碼如下: axios.post('/user', {   &nbs

vueaxios攔截器的使用

1.攔截器分為request請求攔截器和response響應攔截器 PS:request請求攔截器:傳送請求前統一處理,如:設定請求頭headers、應用的版本號、終端型別等。 response響應攔截器:有時候我們要根據響應的狀態碼來進行下一步操作,例如:由於當前的token過期,

vueaxios的統一封裝及調用

return efault timeout 實例 remote class this func 0ms 一、axios.js 1、安裝axios npm install axios --save 2、環境地址(config.js) export default {

vueAxios的封裝和API介面的管理

如圖,面對一團糟程式碼的你~~~真的想說,What F~U~C~K!!! 迴歸正題,我們所要的說的axios的封裝和api介面的統一管理,其實主要目的就是在幫助我們簡化程式碼和利於後期的更新維護。 一、axios的封裝 在vue專案中,和後臺互動獲

vueaxios的使用與封裝

vue中axios的使用與封裝 分享下我自己的axios封裝,多多點贊收藏~axios是個很好用的外掛,都是一些params物件,所以很方便做一些統一處理 當然首先是npm安裝axios 很簡單$ npm install axios --save在src下新建資料夾 service / index.js接

在DataGridView控制元件設定資料顯示格式

實現效果:    知識運用:   DataGridViewCellStyle類的Format屬性  //獲取或設定應用於DataGridView單元格的文字內容的格式字串   public string Format {  get;set;  }  // 通過設定控制元件的列的De

vueaxios請求payload的暴力解決方案

  去年公司做了一個小程式商城專案,運營了一段時間決定再次開發一個H5商城,用於微信好友之間的分享以及app內的巢狀,於是便開了一個vue專案,介面大多都是複用小程式的。  在做專案的過程中本人遇到一個由axios導致的問題——後臺介面拿不到請求的引數。因為介面都是之前寫好的

vue專案學習:9-vueaxios的使用

首先:npm install axios --save然後在home.vue中傳送ajax請求,因為在homevue中只需要傳送一次請求,就可以獲取到資料分發個各子元件。下面是轉發請求的介面值得注意的是,當你的配置檔案發生改變的時候,一定要重啟伺服器。才可以生效,這裡我掉了坑

vueaxios解決跨域問題和攔截器使用

vue中axios不支援vue.use()方式宣告使用。 所以有兩種方法可以解決這點: 第一種: 在main.js中引入axios,然後將其設定為vue原型鏈上的屬性,這樣在元件中就可以直接 this.axios使用了 import axios fro

Vue axios的基礎路徑怎麼設定

在不通過介面檔案的情況下,如何使用axios呢? 在元件中呼叫axios,沒必要一定在介面檔案中設定,你可以選擇在入口檔案中設定基礎訪問路徑,在元件中通過this.axios這個方法傳送非同步請求即可。 舉個栗子吧↓ 專案要求: 所有api的域名為:http://ww

vuevuex資料持久化

vuex資料持久化,vuex-persist 第一步,安裝vuex-persist npm install -S vuex-persist 第二步,在store檔案中引用 import Vue from 'vue' import Vuex from 'vuex'

如何控制matlab資料輸出格式? 改變輸出位數精度

 一. 命令方法針對資料的顯示形式控制,matlab中有專用命令 format 但該命令不影響資料的儲存形式和計算精度 format 預設格式 format short 5字長定點數 format long 15字長定點數 format short e 5字長浮點數 form

關於vueaxios攔截器的使用

Axios攔截器使用預期目標:解決請求任意介面之前進行統一攔截判斷,看是否返回500或404等錯誤並在頁面給出錯誤提示。一、剛開始看官方文件,如下: 備註:將程式碼加到頁面中發現並未起作用,百度谷歌搜尋一番,發現都是千篇一律,不同之處可能就是對返回狀態碼的處理不一樣,並未解決

vue axios 迴圈請求會造成什麼影響,對請求的結果

for (let i = 0; i < this.tableData.length; i++) { //使用閉包 防止變數汙染 (function (i) { console.log(`列印${i

vueAxios的封裝和API接口的管理

們的 cas 管理 users 每次 擴展 ajax ddr 書寫方式 一、axios的封裝 在vue項目中,和後臺交互獲取數據這部分,通常使用的是axios庫,它是基於promise的http庫,可運行在瀏覽器端和node.js中。它有很多優秀的特性,例如攔截請求和響應

聊聊 Vue axios 的封裝

聊聊 Vue 中 axios 的封裝 axios 是 Vue 官方推薦的一個 HTTP 庫,用 axios 官方簡介來介紹它,就是: Axios 是一個基於 promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中。 作為一個優秀的 HTTP 庫,axios 打敗了曾經由 Vue 官方團隊維