项目中有一个功能涉及到需要用ajax接收后台传回来的多个值,在已经实现了传回一个值的基础上,我以为将后台的多个值打包成map传回来就完成了,谁想到错误百出。翻看了一上午的博客,没有一个能直接解决我的问题,总是看别人好像可以,我就不行,挣扎了许久终于从这个巨坑里面爬出来了,特此记录一下,如果有情况相同的可以适当借鉴一下。 第一步,先贴代码: 后台controller @RequestMapping(value = "/ajax/getStatus/map") @ResponseBody public Map ajax_uploadStatus_map(HttpSession 在开发Web应用时,我们经常使用MVC(Model-View-Controller)架构模式来组织代码。在这种模式下,Ajax作为一种异步数据传输技术,能够帮助我们在不刷新整个页面的情况下更新部分视图。本文主要探讨如何在MVC环境中,通过Ajax接收后端返回的Map对象。 让我们来看一下标题和描述中提到的问题。开发人员在实现一个功能时,需要通过Ajax从服务器获取多个值。通常,我们会选择将这些值封装到一个Map对象中,然后由后端控制器处理并返回给前端。然而,遇到的问题是,尝试直接返回Map对象时遇到了错误,主要是因为Spring MVC无法自动将Map对象转换为JSON格式,导致前端无法正确解析。 1. **错误处理**: 当尝试直接返回Map对象时,Spring MVC报出了`HttpMessageNotWritableException`,表示找不到适配器来处理返回的Map类型。这通常是由于缺少合适的HttpMessageConverter,例如`MappingJackson2HttpMessageConverter`,这个转换器负责将Java对象转换为JSON。 2. **解决方法**: - 第一次尝试:查看相关教程,但没有直接解决问题。 - 第二次尝试:根据网上帖子导入了某些包,但导致了500错误,项目无法正常启动。 - 第三次尝试:由于对JSON不熟悉,错误地导入了JSON库,仍然无法解决问题。 - 成功解决方案:最后通过在Maven仓库中找到最新版本的`jackson-databind`、`jackson-core`和`jackson-annotations`包,并替换为相同版本(例如2.10.3),问题得到了解决。这是因为这些包提供了将Map对象转换为JSON所需的功能。 3. **使用Ajax接收Map对象**: 在前端,使用jQuery的$.post方法发送Ajax请求。当添加了`@ResponseBody`注解后,Spring MVC会尝试将返回的Map对象转换为JSON响应。在成功发送请求后,可以通过回调函数中的"data"参数访问返回的JSON数据。例如: ```javascript $.post($("#PageContext").val()+"/upload/ajax/getStatus/map", {}, function(data) { alert("1: " + data.key1); alert("2: " + data["key1"]); var d = data; for (var key in d) { alert("3: " + d[key]); } }); ``` 这段代码展示了如何遍历并输出JSON对象的每个键值对。 4. **注意事项**: - 确保引入了正确的JSON库,并且版本与Spring MVC兼容。 - 使用`@ResponseBody`注解,使控制器方法的返回值被转换为HTTP响应体。 - 前端解析JSON时,可以使用点号`.`或方括号`[]`访问属性,如`data.key1`和`data["key1"]`都是等价的。 - 为了调试,可以使用浏览器的开发者工具查看网络请求,检查HTTP响应体的内容,以确认JSON数据是否正确返回。 总结,处理Ajax与后端交互时,确保前端与后端之间的数据转换正确至关重要。在这个例子中,通过正确配置和使用JSON库,以及理解Spring MVC的HttpMessageConverter机制,成功实现了Ajax从MVC后端接收Map对象。如果遇到类似问题,可以参考上述步骤进行排查和解决。



























- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 【地理信息系统】基于Google Earth Engine的生态项目区域分析:矢量数据转栅格与地图可视化系统构建
- Windows免驱使使用slcan,使用方法以使用cangaroo为例
- 【地理信息系统】基于GEE的哥伦比亚考卡塔省森林覆盖变化分析:2020至2021年土地利用与碳排放监测
- 学生课堂学习行为数据集
- mediamtx配合nodered动态更新视频列表
- echarts构建世界地图json文件
- 路面缺陷检测:裂缝、井盖和坑洼识别数据集
- 汽车车牌数据集-YOLO项目格式
- test0707111111111
- C, Logger,纯C,无外部库
- java反编译工具jd-gui
- CenOS7 32位下载地址
- Qt VNC 包含服务端和客户端
- Node连接数据库查询数据并返回至前端页面
- test12345123123
- 程序设计TwoSum.zip


