You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Axios发送键不带双引号的JSON格式数据?

问题解决:Axios发送数据后端无法读取的问题

问题原因

你设置了Content-Type: application/x-www-form-urlencoded,但实际发送的是带引号键名的JSON格式数据,后端期望的是表单编码格式(如email=mytest@email.com&password=xxx),格式不匹配导致解析失败。

解决方案

方案1:发送表单编码格式数据(匹配Postman请求)

使用URLSearchParams构造符合要求的表单数据,Axios会自动将其转换为后端期望的格式:

// 构造表单数据
const formData = new URLSearchParams();
formData.append('email', data.get('email'));
formData.append('password', data.get('password'));

const options = {
  headers: { 
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
    "Accept": "application/json" 
  }
}

axios.post('http://127.0.0.1/register/', formData, options)

方案2:后端支持JSON时,修改Content-Type

如果后端实际可接收JSON格式数据,只需将请求头的Content-Type改为application/json,保持原数据结构即可:

const options = {
  headers: { 
    'Content-Type': 'application/json',
    "Accept": "application/json" 
  }
}

axios.post('http://127.0.0.1/register/', 
{
  email: data.get('email'), 
  password: data.get('password'), 
}, options)

补充说明

当给Axios传递普通JS对象且Content-Type设为application/x-www-form-urlencoded时,Axios不会自动将其转换为表单编码格式,而是默认序列化为JSON字符串,这就是后端无法读取数据的核心原因。若需处理复杂嵌套数据,也可使用qs库来序列化表单数据。

内容的提问来源于stack exchange,提问作者Jay Kyung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 06:18:24