欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue axios post發(fā)送復雜對象問題

 更新時間:2019年06月04日 09:50:32   作者:程序媛的自我修煉  
現(xiàn)在vue項目中,一般使用axios發(fā)送請求去后臺拉取數(shù)據(jù)。這篇文章主要介紹了vue axios post發(fā)送復雜對象的一點思考,需要的朋友可以參考下

一、項目情形

現(xiàn)在vue項目中,一般使用axios發(fā)送請求去后臺拉取數(shù)據(jù)。

在某些業(yè)務場景中,前端需要在某個字段中發(fā)送一個復雜的嵌套對象給后臺做保存并處理。雖然axios可配置發(fā)送方式(post/get等),但如果不做其他配置,post的數(shù)據(jù)其實也是拼在請求地址后面,而這種傳輸方式會有很多問題:一是可能數(shù)據(jù)丟失,二是get傳送的數(shù)據(jù)長度有l(wèi)imit,如果需要保存大段的中文,會報錯;三是數(shù)據(jù)不直觀,復雜對象的格式會出現(xiàn)問題。

二、解決方案

怎么實現(xiàn)使用post方法時,能實現(xiàn)formData方式提交,而且整個請求數(shù)據(jù)格式能像queryString一樣直觀。

使用QS將數(shù)據(jù)序列化

//main.js
import axios from 'axios';
Vue.prototype.$axios = axios; // 配置axios的訪問方式
//demo.vue
import Qs from qs;
this.$axios({
 method: "post",
 url: "url",
 data: reqData,
 transformRequest: [ function(data){
  return Qs.stringify(data) //使用Qs將請求參數(shù)序列化
 }],
 headers: {
  'Content-Type': 'application/x-www-form-urlencoded' //必須設置傳輸方式
 }
}).then((res)=>{
 //邏輯代碼
}

完成第一步后,可以實現(xiàn)post請求了,請求體為formData的格式,但如果reqData是一個對象嵌套數(shù)組的復雜對象,form的格式會變得非常不直觀。如果此時后臺需要將對象整個儲存起來,以便下次拉取數(shù)據(jù)渲染前端頁面,則會增加很多額外的轉化工作。

//例如obj為一個嵌套多層的復雜對象
let reqData = {
 id: '123',
 status: '1',
 data: {
  innerData: {
   price: "higher",
   amount: "2000",
  },
  outerData: {
   price: "lower",
   amount: "3000"!
  },
  parts: ['123','234','345','456']
 }
}
//參考如上配置,最后請求體中parsed的數(shù)據(jù)格式會變成如下
![圖片描述][1]

對象跟數(shù)組的每一項都被拆拼成鍵值對,數(shù)據(jù)格式非常不直觀,如果后臺需要將整個數(shù)據(jù)保存以便下次取用,會不方便。

可以怎樣簡單處理一下,讓它變得像如下圖一的get方法一樣參數(shù)清晰呢?


只需做一個簡單的處理,將復雜對象對象變成字符串,再進行傳輸。

let data = {
  innerData: {
   price: "higher",
   amount: "2000",
  },
  outerData: {
   price: "lower",
   amount: "3000"!
  },
  parts: ['123','234','345','456']
 },
 reqData = {
  id: '123',
  status: '1',
  data: **JSON.stringify(data)**
 };
this.$axios({
 method: "post",
 url: "url",
 data: reqData,
 transformRequest: [ function(data){
  return Qs.stringify(data) //使用Qs將請求參數(shù)序列化
 }],
 headers: {
  'Content-Type': 'application/x-www-form-urlencoded' //必須設置傳輸方式
 }
}).then((res)=>{
 //邏輯代碼
}

這樣之后,數(shù)據(jù)格式變得清晰可讀,而且后臺可以根據(jù)key值直接取出整個對象。我們也可以大方優(yōu)雅地用vue axios進行post傳輸啦。


總結

以上所述是小編給大家介紹的vue axios post發(fā)送復雜對象問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

相關文章

  • Vue 實現(xiàn)樹形視圖數(shù)據(jù)功能

    Vue 實現(xiàn)樹形視圖數(shù)據(jù)功能

    這篇文章主要介紹了Vue 實現(xiàn)樹形視圖數(shù)據(jù)功能,利用簡單的樹形視圖實現(xiàn)的,在實現(xiàn)過程中熟悉了組件的遞歸使用,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-05-05
  • Vue實戰(zhàn)之項目開發(fā)時常見的幾個錯誤匯總

    Vue實戰(zhàn)之項目開發(fā)時常見的幾個錯誤匯總

    vue作為前端主流的3大框架之一,目前在國內有著非常廣泛的應用,下面這篇文章主要給大家介紹了關于Vue實戰(zhàn)之項目開發(fā)時常見的幾個錯誤匯總的相關資料,對大家學習或者使用vue具有一定的參考學習價值,需要的朋友可以參考下
    2023-03-03
  • vue使用element-ui實現(xiàn)表單驗證

    vue使用element-ui實現(xiàn)表單驗證

    這篇文章主要為大家詳細介紹了vue使用element-ui實現(xiàn)表單驗證,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Vue圖片懶加載之Vue-Lazyload的使用

    Vue圖片懶加載之Vue-Lazyload的使用

    懶加載就是延時加載,即當需要用到的時候再去加載,本文主要介紹了Vue圖片懶加載之Vue-Lazyload的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • vue生成gzip壓縮包部署到nginx的示例

    vue生成gzip壓縮包部署到nginx的示例

    vue 生成gzip壓縮包部署到nginx服務器,如果我們把web網站資源進行gzip壓縮后進行傳輸給瀏覽器,這樣就能加快網站資源的加載速度,這篇文章主要介紹了vue生成gzip壓縮包部署到nginx,需要的朋友可以參考下
    2022-12-12
  • 如何解決Element UI el-dialog打開一次后無法再次打開問題

    如何解決Element UI el-dialog打開一次后無法再次打開問題

    這篇文章主要介紹了如何解決Element UI el-dialog打開一次后無法再次打開問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • vue實現(xiàn)五子棋游戲

    vue實現(xiàn)五子棋游戲

    這篇文章主要為大家詳細介紹了vue實現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • vue2實現(xiàn)provide inject傳遞響應式

    vue2實現(xiàn)provide inject傳遞響應式

    在看element-ui的源碼的時候,注意到源碼里面有很多地方使用provide和inject的屬性,本文主要介紹了vue2實現(xiàn)provide inject傳遞響應式,分享給大家,感興趣的可以了解一下
    2021-05-05
  • vue項目中應用ueditor自定義上傳按鈕功能

    vue項目中應用ueditor自定義上傳按鈕功能

    這篇文章主要介紹了vue項目中應用ueditor自定義上傳按鈕功能,文中以vue-cli生成的項目為例給大家介紹了vue項目中使用ueditor的方法,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-04-04
  • vue 實現(xiàn)Web端的定位功能 獲取經緯度

    vue 實現(xiàn)Web端的定位功能 獲取經緯度

    這篇文章主要介紹了vue 實現(xiàn)Web端的定位功能獲取經緯度,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08

最新評論