vue中使用axios 传参不要对象怎么做?

我用axios传过去的数据是这样的,但我不需要{},就是图中红色圈起来部分

clipboard.png

这是用ajax得到的,是我希望传过去的形式

clipboard.png
我要怎么设置axois 啊
这是我axios的代码

clipboard.png

阅读 6.5k
6 个回答

使用qs模块进行序列化

npm install qs -S

//POST传参序列化(添加请求拦截器)
Axios.interceptors.request.use(
  config => {
    // 在发送请求之前做某件事
    if (
      config.method === "post"
    ) {
      // 序列化
      config.data = qs.stringify(config.data); // ***** 这里转义
    }

    // 若是有做鉴权token , 就给头部带上token
    if (localStorage.token) {
      config.headers.Authorization = localStorage.token;
    }
    return config;
  },
  error => {
    Message({
      //  饿了么的消息弹窗组件,类似toast
      showClose: true,
      message: error,
      type: "error.data.error.message"
    });
    return Promise.reject(error.data.error.message);
  }
);

确定传入的参数params是对象,post函数的第二个参数{params} 去掉{}号 还有建议楼主下次代码不要截图 复制一下贴上来比较合适

...你把{}去掉不就好咯

参数 params外面不能直接加{},字符串和变量不能直接写一起啊。去掉外层的括号就好了吧

标准解决方式

import axios from 'axios'
import promise from 'es6-promise'
import Qs from 'qs'
// promise 兼容
promise.polyfill()
// 请求头
axios.defaults.headers = {
  'Content-Type': 'application/x-www-form-urlencoded'
}
// 兼容form-data方式进行数据转换 ->推荐'application/json'
axios.defaults.transformRequest = [function (data) {
  data = Qs.stringify(data)
  return data
}]

引入qs包对数据做序列化处理Qs.stringify(data)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏