Ajax发送JSON数据时服务器返回400错误怎么办?

公孙庆玲 阅读 15

我在用jQuery的$.ajax发送POST请求时,把数据对象直接写在data参数里,服务器提示400错误说”Unexpected token”。

尝试过把contentType设成application/json,但没转成字符串就直接传对象了。后来看到控制台的请求体显示的是未格式化的键值对,服务器根本没解析成JSON结构。


$.ajax({
  url: '/api/save',
  method: 'POST',
  data: { name: '测试', age: 25 },
  contentType: 'application/json',
  success: function(res){
    console.log('成功');
  }
});

用Postman测试过接口,传正确的JSON字符串没问题,但前端代码就是调不通,是不是少了什么关键步骤?

我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
小泽铭
小泽铭 Lv1
问题出在你传的data参数上,jQuery默认会把对象转成application/x-www-form-urlencoded格式,即使你设置了contentType为application/json也没用。要解决这个问题,得手动把数据对象转成JSON字符串。

直接用这个:

$.ajax({
url: '/api/save',
method: 'POST',
data: JSON.stringify({ name: '测试', age: 25 }),
contentType: 'application/json',
success: function(res){
console.log('成功');
}
});


关键点是用JSON.stringify把对象序列化成JSON字符串,这样请求体才会是标准的JSON格式。另外记得确保服务器端确实需要application/json格式的数据,要是后端只认表单格式,那得改用默认的contentType。

对了,调试的时候可以在浏览器network面板看看实际发出去的请求体,确认是不是正确的JSON格式。我之前也被这种问题坑过,后来就养成习惯总要检查下实际发出的请求。
点赞
2026-02-16 21:02