一:axios用post傳參的資料格式
之前在做專案的時候,從來都沒有注意過引數傳給後臺的格式。一般都是覺的是json物件。 直到前段時間,用Vue +Vue-router + axios + element-ui
做了個後臺系統。在和後臺聯調的時候,後臺返回的資料一直是伺服器開小差,後來讓後臺同事給看了下,說是我傳參為空。可是我明明傳了呀,而且同樣的傳參方式在另一個專案中都能正常調取介面。後來查了一下,原來這兩個專案,後臺接收的引數的格式不一樣,所以也就要求前端傳的引數格式不一樣。
axios預設傳參格式
axios
預設的傳參格式是application/json
,這種編碼方式,傳遞給後臺的引數是序列化的json
字串。但是在這個專案當中,後臺要的是application/x-www-form-urlencoded
這種格式的資料。
解決方法:
1:/*在api.js 資料夾中引入qs*/
import qs from 'qs'
2:/*在使用axios中使用*/
post : async function(url, options) {
var resultData = await new Promise((resolve, reject) => {
axios.post(API_ROOT + url, qs.stringify(options)).then((response) => {
resolve(response.data)
}).catch((error) => {
reject(error)
})
})
複製程式碼
注意: 此專案是我用Vue-cli
搭建的專案,qs
資源直接引入就行,否則的話得先下載再引用。
二:vue中下拉框使用v-for的渲染問題
在專案中,下拉框的內容比較多,所以使用陣列迴圈的方式來渲染。 我剛開始使用的一下的渲染方式,但是有相容性,專案在火狐和IE瀏覽器中資料渲染不出來。
<select v-model="repayId" >
<option
v-for="item in repayStatusLists"
:key="item.id"
:value="item.id">
</option>
</select>
複製程式碼
後來改成這樣的格式就正確了。
<select v-model="repayId" >
<option
v-for="item in repayStatusLists"
:key="item.id"
:value="item.id">
{{item.value}}
</option>
</select>
複製程式碼