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

AJAX请求在Postman正常但代码报错:JSON语法错误

问题分析与解决方案

你的问题根源在于AJAX请求的内容格式和服务器期望的不匹配,具体来说:

当你设置了contentType: 'application/json',意味着告诉服务器“我发送的是JSON格式的数据”,但jQuery的$.ajax在默认情况下,如果你直接传入一个JavaScript对象作为data的值,它会自动把对象序列化为application/x-www-form-urlencoded格式(比如tags=value&cats=value),而不是JSON字符串。这就导致服务器端尝试解析JSON时,收到的是不符合JSON规范的内容,从而抛出SyntaxError: Unexpected token # in JSON at position 0错误。

而Postman能正常工作,是因为你在Postman里手动构造了合法的JSON请求体,和服务器期望的格式完全一致。

修复步骤

1. 把AJAX的data转为JSON字符串

修改你的AJAX代码,用JSON.stringify()把数据对象转为标准的JSON字符串,确保发送给服务器的内容格式正确:

$.ajax({
  contentType: 'application/json',
  url: "/insert/image_data",
  method:"post",
  data: JSON.stringify({ tags: tag, cats: cat }), // 关键:将对象转为JSON字符串
  dataType: "json",
  success:function(res){
    console.log(res);
  },
  error: function(err){
    console.log(err);
  }
});

2. 修复服务器端的响应格式(可选但推荐)

你的AJAX设置了dataType: "json",意味着客户端期望服务器返回JSON格式的响应,但目前服务器返回的是纯字符串"Req GOOD",这会导致客户端解析响应时也可能触发错误。建议修改服务器代码,返回合法的JSON结构:

app.post("/insert/image_data", function(req, res){
  let imageData = req.body;
  console.log("/insert/image_data route reached");
  console.log("--> imageData = ", prettyjson.render(imageData));
  res.status(200).json({ message: "Req GOOD" }); // 返回JSON格式的响应
});

这样修改后,AJAX请求发送的是合法的JSON内容,服务器能正确解析;同时客户端也能正常处理服务器返回的响应,整个请求流程就能正常运行了。

内容的提问来源于stack exchange,提问作者JT Houk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:30:47