vue中formdata傳值給后臺(tái)時(shí)參數(shù)為空的問(wèn)題
formdata傳值給后臺(tái)時(shí)參數(shù)為空
在vue里面使用formData的時(shí)候參數(shù)值為空,是因?yàn)閍xios是進(jìn)行了二次封裝,所以傳遞表達(dá)的時(shí)候會(huì)傳遞一個(gè)空表單過(guò)去
axios在進(jìn)行二次封裝的時(shí)候回影響到原來(lái)的表單提交或者文件上傳, 所以可以用原生的發(fā)請(qǐng)求
// list 是一個(gè)對(duì)象數(shù)組
export const orinCatelogue = (list) => {
let fd = new FormData()
for(var i=0;i<list.length;i++) {
console.log(list[i])
console.log(Object.keys(list[i]))
console.log(Object.values(list[i]))
fd.append(Object.keys(list[i]),Object.values(list[i]))
console.log("---------")
}
return axios({
method: "post",
url: `sgcc/qa/catalogue`,
data: fd,
headers: { "Content-Type": "multipart/form-data" }
})
}比如輸入是:

控制臺(tái)輸出:

實(shí)際上傳遞的參數(shù):

使用formData時(shí)候傳遞參數(shù)是個(gè)空值的情況
關(guān)于在vue中使用axios,傳遞的參數(shù)是formData的情況(上傳文件,圖片,文檔等)
formData用途
1.將from表單元素的name和value結(jié)合,實(shí)現(xiàn)表單數(shù)據(jù)的序列化
2.異步上傳文件
使用formData
1.創(chuàng)建一個(gè)空對(duì)象
var formData = new FormData(); //大部分情況下,使用formData追加數(shù)據(jù),是通過(guò)append() Api來(lái)進(jìn)行追加 formData.append(key,value) //取出追加的值 formData.get(key) //修改值 formData.set(key,newVale)
2.通過(guò)表單對(duì)formData進(jìn)行初始化
<form id="myForm"> ? ? <p>name:<input type="text" name="name" ?value="xiaolong"></p> ? ??? ?<p>age:<input type="text" name="age" ?value="23"></p> ? ? <p><input type="button" id="btn" value="添加"></p> </form>
通過(guò)表單元素作為參數(shù),對(duì)formData進(jìn)行初始化
var btn=document.querySelector("#btn");
btn.onclick=function(){
? ? //獲取表單元素
? ? var form=document.querySelector("#myForm");
? ? //初始化表單
? ? var formdata=new FormData(form);
?? ?//此時(shí)可以進(jìn)行一個(gè)操作,獲取或者設(shè)置表單的值或者直接提交整個(gè)表單
? ? console.log(formdata.get("name"));//xiaolong
}具體表單的操作API
大部分可以從mdn上面查找到
舉個(gè)例子:
獲取表單數(shù)據(jù)或者獲取整個(gè)表單對(duì)應(yīng)key的數(shù)據(jù)
formData.get('age')//獲取一個(gè)key為age的值
formData.getAll('age')//獲取全部key為age的數(shù)據(jù)在vue里面使用formData的時(shí)候,因?yàn)閍xios是進(jìn)行了二次封裝,所以傳遞表達(dá)的時(shí)候會(huì)傳遞一個(gè)空表單過(guò)去,這是因?yàn)閍xios在進(jìn)行二次封裝的時(shí)候回影響到原來(lái)的表單提交或者文件上傳
因此在使用二次封裝axios的時(shí)候需要進(jìn)行一個(gè)參數(shù)的設(shè)置
this.$axios({
? ? method: "post",
? ? url: `你的請(qǐng)求地址`,
? ? data: formD,//這個(gè)是我的fromdata
? ? headers: {
? ? transformRequest: [data => data]//此處是我進(jìn)行設(shè)置的轉(zhuǎn)換數(shù)據(jù)類(lèi)型
? ? }
})以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue實(shí)現(xiàn)下拉加載其實(shí)沒(méi)那么復(fù)雜
這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)下拉加載的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Vue router的addRoute方法實(shí)現(xiàn)控制權(quán)限方法詳解
這篇文章主要介紹了vue動(dòng)態(tài)路由添加,vue-router的addRoute方法實(shí)現(xiàn)權(quán)限控制流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-09-09
Vue-CLI 項(xiàng)目在pycharm中配置方法
這篇文章主要介紹了Vue-CLI 項(xiàng)目在pycharm中配置方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
vue調(diào)用谷歌授權(quán)登錄獲取用戶(hù)通訊錄的實(shí)現(xiàn)示例
本文主要介紹了vue調(diào)用谷歌授權(quán)登錄獲取用戶(hù)通訊錄的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Element樹(shù)形控件el-tree懶加載并設(shè)置默認(rèn)展開(kāi)和選中的效果
本文主要介紹了Element樹(shù)形控件el-tree懶加載并設(shè)置默認(rèn)展開(kāi)和選中的效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
vue實(shí)現(xiàn)web在線(xiàn)聊天功能
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)web在線(xiàn)聊天功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
vue3使用particles插件實(shí)現(xiàn)粒子背景的方法詳解
這篇文章主要為大家詳細(xì)介紹了vue3使用particles插件實(shí)現(xiàn)粒子背景的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03

