最近使用 vue 构建一个小项目,在使用 axios 发送 post 请求的时候,发现 axios 发送数据默认使用 json 格式,百度搜了下,更改 ContentType 不管用,最终问题原来是: post 的传参需要序列化,不然服务端不会正确接收数据,终于找到两种方法解决:

方法一:使用 JSON.stringify( )

URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串;
JSON.stringify( )用于从一个对象解析出字符串。
在 vue 项目中,发送的参数定义为 param,


let param = new URLSearchParams()
param.append("bizContent", JSON.stringify(bizContent))
axios.post(httpUrl.getDatas, param)

方法二:使用 qs 库

首先要安装 qs,然后在项目中引用:
import qs from 'qs'
同样,我们使用 qs.stringify( ) 这个方法处理 post 请求中需要发送的数据

相比较

相比较这两种方法,功能都是序列化,但是处理出来的结果还是不一样的,使用的时候还要看服务器的要求,下面的传送门大家可以了解两者序列化的结果有何不同: 传送门

原文地址:https://segmentfault.com/a/1190000012865880

05-29 01:24