vue中使用axios提交参数要注意的地方(post方法后台获取不到参数的解决方法)
handleModifyStatus(row, status) { console.log("进入方法1") let userId = row.userid deleteUser({userId}).then(()=>{ console.log("进入删除方法2") })
这是一个删除一条信息记录的vue前端提交数据写法,要注意这一句:
let userId = row.userid deleteUser({userId}).then(()=>{
也可以写成:deleteUser(row.userid).then(),但是这样写userId就只是把值传递到后台了,但是就像键值对没有键一样,这时候传递到后台的键就会是他们自己创建的类似于:
/user/deleteUser?0=54这样的,这个54的键值是0,而后台参数是userId,所以后台就不能得到正确的参数,但是想上面那样,把row.userid赋值给userId,然后用大括号放在方法中,后台就能得到值了,要注意你去储存row.userid的变量要和后台方法中的形参一样。
关于vue中参数提交的问题:
参数用params提交
export function getPermission(token) {//登陆后自动执行这个方法,获取用户权限,这里的token我们传的是userid return request({ url: '/user/info', method: 'get', params: token }) }
参数用data提交
export function getPermission(token) {//登陆后自动执行这个方法,获取用户权限,这里的token我们传的是userid return request({ url: '/user/info', method: 'get', data: token }) }
参数用params提交,不管提交方法是‘get’还是‘post’都是以url?参数1&参数2 的形式提交的
参数用data提交,如果参数有多个键值对,axios就会自动转换为json格式的参数,此时如果用post就不会在url后面带参数,但是后台没法正常接收json值,这里说两种方法解决:
1用qs.stringfy()去转化一下data这样到后台就不会是json格式的数据,
2后台方法上加上@ResqustBody这样就能接收json值