Ajax POST请求执行成功但返回null空值的异常问题
问题概述
无论采用何种方式启动项目,每次发起Ajax POST请求时,接口都会返回“操作成功”的状态提示,但最终返回的业务结果始终为null,相关现场截图如下:


常见问题排查方向
- 统一响应封装逻辑异常
多数项目会采用统一响应结构封装接口返回(通常包含状态码、操作提示、业务数据三个核心字段),如果全局响应拦截器在封装返回值时,仅设置了“操作成功”的提示信息,遗漏了对业务方法实际返回值的赋值操作,就会出现状态提示正常但业务数据为null的问题。可重点检查项目中实现ResponseBodyAdvice的全局类、全局响应过滤器的返回值处理逻辑,确认实际业务结果是否被正常塞入响应体。 - 前后端参数接收规则不匹配
如果前端发起POST请求时传递的是JSON格式请求体(对应请求头Content-Type: application/json),但后端接口未使用@RequestBody注解接收参数,会导致后端无法解析到前端传递的入参,业务逻辑执行时因入参缺失,直接返回空结果,同时触发统一响应的成功返回分支。 - 全局序列化配置不匹配
项目使用的JSON序列化组件(Jackson、Fastjson等)如果开启了null值字段不输出的配置,前端在解析响应时,取不到对应字段值就会显示为null。可检查序列化配置中WRITE_NULL_MAP_VALUES、NON_NULL这类过滤规则,确认业务数据字段是否被配置过滤。 - 前端Ajax解析规则错误
前端发起请求时如果配置了与实际响应不匹配的dataType(比如后端返回标准JSON结构,前端却按纯文本格式解析),会导致解析后的业务值为null,但接口返回的“操作成功”提示可被正常识别。 - 跨域配置异常
如果请求存在跨域场景,全局跨域过滤器在处理响应时,误将响应体中的业务数据部分过滤,仅保留了状态和提示信息,也会出现该类问题。
内容的提问来源于stack exchange,提问作者Mahmud Hasan
相关产品推荐
相关产品推荐

