MEAN API POST请求JSON解析错误排查求助
解决前端POST请求JSON解析错误的问题
看起来你的问题出在前端发送的请求数据格式不符合后端的JSON解析要求,虽然你设置了contentType: 'application/json',但jQuery的$.ajax方法在处理data参数时,如果你传入的是普通JavaScript对象,它默认会把数据编码成application/x-www-form-urlencoded格式,而不是真正的JSON字符串——这就导致后端的Express在尝试解析请求体时失败,直接触发了JSON解析错误,所以你的后端代码里的console.log根本没机会执行。
修复步骤:
把data参数里的对象用JSON.stringify()转换成JSON字符串,这样请求体才会是标准的JSON格式,后端才能正确解析:
修改后的前端代码:
$.ajax({ type: 'POST', contentType: 'application/json', // 关键修改:用JSON.stringify把对象转成JSON字符串 data: JSON.stringify({ "email": "myEmail@students.berkeley.net", "password": "isilly" }), dataType: 'json', success: function(data){ runMySuccessFunction(data); }, error: function(){ alert("failed"); }, url: 'https://notmyrealurl.herokuapp.com/veggiegang/api/users' });
为什么ARC测试正常?
因为ARC这类工具会严格按照你设置的Content-Type来发送对应的格式数据,你在ARC里应该是直接输入了JSON格式的请求体,所以后端能正常解析。
额外检查(可选)
确保你的Express后端已经配置了express.json()中间件(用来解析JSON请求体),如果还没加的话,在你的后端代码里加上:
app.use(express.json());
不过从你用ARC测试正常来看,这个应该已经配置过了,但还是确认一下更稳妥。
内容的提问来源于stack exchange,提问作者Otis
相关产品推荐
相关产品推荐

