vue执行到axios时浏览器会报username未定义?

<template>
<div class="hello">
<h1>Welcome to {{ msg }}</h1>
<form >
username:<input type="text" name="username" v-model="u.username"><p/>
carname:<input type="text" name="carname" v-model="u.carname"><p/>
price:<input type="text" name="price" v-model="u.price"><p/>
number:<input type="text" name="number" v-model="u.number"><p/>
<input type="button" value="submit" @click="submit(u)"><p/>
</form>
</div>
</template>
<script>
import axios from 'axios'
import qs from 'qs'
export default {
data(){
return{
msg:'insert',
u:[]
}
},
methods:{
submit:function(u){
let data=qs.stringify({
"username":u.username,
"carname":u.carname,
"price":u.price,
"number":u.number
})
console.log(data)
// this.u=this.data
axios.get("api/orders/insert?u="+data).then(res=>{
console.log(res.data)
// this.$router.push({name:"user"})
})
},
},
mounted(){
this.submit(this.$route.params.u)
}
}
</script>

因为axios是异步请求。
异步请求还没有返回结果之前u还是一个空值,所以username是未定义。当返回结果之后,有值就没有问题了。
这个错误影响不大,但是最好先判断u,也可以先给u赋默认值,避免出现这种情况。追问

大佬 能不能给改一下 不怎么会前端啊

追答

这个错误也可以不改的,不影响后续程序

追问

不行啊 我要往数据库加东西 他返回到controller类里username是空的 然后我在页面上展示所有数据的时候新加的数据就查不出来

追答

检查下你u的值,在初始化的时候需要定义u:{username:''}

追问

还是不行 他就是获取不到输入的第一行的数据 把username的注了他就会报下一行的未定义 没办法 我加了个无用的字段 让要用的数据可以拿到 但本质上他应该还是有问题

追答

mounted的时候没有赋值?

温馨提示:答案为网友推荐,仅供参考