AJAX向Java后端发送JSON对象失败,请求排查语法及后端问题
前端AJAX发送JSON到Java后端的问题排查
先帮你梳理下前端代码的问题和后端错误的根源:
前端代码的问题(语法/配置错误)
你的前端代码里有两个明显的问题,可能先导致AJAX请求本身无法正常工作:
- 重复且错误引入jQuery:你同时引入了CDN的jQuery和本地的
scripts/jquery.min.js.download,后者的后缀是.download,明显是下载后没修改文件名,浏览器根本无法正确加载这个脚本。而且重复引入jQuery会导致冲突,建议直接删掉本地的那个脚本标签,只保留CDN的引入。 - 当你取消注释
contentType: "application/json;charset=utf-8"时,AJAX的语法是完全正确的:用JSON.stringify(myJSon)把JS对象转成JSON字符串作为请求体,同时告诉后端请求内容是JSON格式,这部分完全符合AJAX发送JSON请求的规范。
后端错误的根源
你看到的INFO: Could not find grammar element for class java.lang.String错误,完全是后端的配置/代码问题,和前端语法没有关系。这个错误通常出现在Java后端(比如Spring MVC)处理JSON请求时,常见原因包括:
- 后端缺少JSON解析依赖:比如Spring项目没有引入Jackson相关的依赖(
jackson-databind),导致框架无法解析JSON请求体。 - 接口参数接收方式错误:
- 如果你的后端接口是用
@RequestBody String jsonStr来接收JSON字符串,可能框架的消息转换器没有配置支持直接把JSON解析成String类型; - 更合理的做法是定义一个和前端JSON结构对应的POJO类(比如包含
name、age、city字段的User类),然后用@RequestBody User user来接收请求体,这样框架会自动把JSON解析成实体对象。
- 如果你的后端接口是用
- 后端消息转换器配置异常:比如Spring没有正确注册
MappingJackson2HttpMessageConverter,导致无法处理JSON格式的请求。
建议的修复步骤
- 先修复前端的jQuery引入问题,确保AJAX能正常发起请求;
- 后端这边:
- 确认已添加JSON解析依赖(比如Maven中添加
jackson-databind的依赖); - 调整接口的参数接收方式,优先使用POJO类配合
@RequestBody注解; - 检查Spring配置,确保JSON消息转换器已正确配置。
- 确认已添加JSON解析依赖(比如Maven中添加
内容的提问来源于stack exchange,提问作者Mutan Asul
相关产品推荐
相关产品推荐

