Vue3中axios封装内容无法发送input框中输入内容的问题
程序员文章站
2024-01-02 22:53:34
...
需求是希望将input框中输入的内容通过axios发送给后端服务器,遇到的问题为发送出的数据为数组中的原始数据,并不会将input的内容发送出去。
先看下代码
<template>
<el-input v-model="form.input"> </el-input>
<el-button @click="sendfunc()" circle>send</el-button>
</template>
<script setup>
const form=reactive({
"input":'test',
"account":'',
"password":''
})
const options = {
method: 'POST',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
data: Qs.stringify(form),
url:'http://localhost/api/vueserver',
};
function sendfunc() {
console.log(form)
axios(options)
})
}
</script>
由一个input给出数据来源,由axios发送数据。其中axios中的内容封装在了options。
在input中输入内容并且发送至后端,对比一下两侧的数据
前端看到的内容:
后端接收的数据:
可以看到后端并没有接收到input框中的内容,而是收到了原始的form字典中的数据。
排查之后发现在axios函数中不能将内容封装好发送,option只保存了form中最原始的值,而没有跟着form变化。最简单的方法就是放弃option的封装,直接将内容写进axios中。
function sendfunc() {
console.log(form)
axios({
method: 'POST',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
data: Qs.stringify(form),
url:'http://192.168.120.178:80/api/vueserver',
})
}
再次测试后发现后端接收到input中的内容了