先上前端javascript。ajax代码

  1. <pre name="code" class="javascript"> function testAjaxS(){
  2. $.ajax({
  3. type:'post',
  4. url:'material/testAjax',
  5. data:'MediaId:手',
  6. success:function(data){//返回json结果
  7. alert("success");
  8. }
  1.  

相应的Spring mvc 接收代码

  1. @RequestMapping("/testAjax")
  2. public @ResponseBody WXMedia testAjax(WXMedia wxMedia){ //值得注意的地方,參数中没有@RequestBody, 而且该POJP类必须有一个无參构造器
  3. System.out.println(wxMedia);
  4. return wxMedia;
  5. }

另外一种:

  1. function testAjaxS(){
  2. $.ajax({
  3. type:'post',
  4. url:'material/testAjax2',
  5. //json字符串必须设置
  6. contentType:'application/json;charset=utf-8',
  7. //数据格式是json字符串
  8. data:"{'MediaId':'手'}",
  9. success:function(data){//返回json结果
  10. alert("success");
  11. }
  12.  
  13. });

相应的spring mvc 接收代码

  1. @RequestMapping("/testAjax2")
  2. public @ResponseBody WXMedia testAjax2(@RequestBody WXMedia wxMedia){ //这里有RequestBody
  3. System.out.println(wxMedia);
  4. return wxMedia; //返回的也会是一个json字符串,尽管方法返回值是POJO类
  5. }

接收JSON数组:

前端代码:

  1. function testAjaxS(){
  2. $.ajax({
  3. type:'post',
  4. url:'material/testAjax3',
  5. contentType:'application/json;charset=utf-8',
  6. data:JSON.stringify([{"MediaId":"1"},{"MediaId":"2"}]), //2个对象
  7. success:function(data){//返回json结果
  8. alert("success");
  9. }
  10.  
  11. });

后台接收:

  1. @RequestMapping("/testAjax3")
  2. public @ResponseBody WXMedia[] testAjax3(@RequestBody WXMedia[] wxMedia){
  3. System.out.println(wxMedia.length);
  4. return wxMedia;
  5. }

总结:

@RequestBody: 接受json字符串。后面跟对应的POJO类型就可以,假设是数组则打上[],不加该注解则接收普通的參数请求

@ResponseBody:以JSON格式返回POJO对象

/* **************************2015年11月24日 11:59:13 **************************
*/

如果有这么一个对象:

  1. var obj = {
  2. userId : userId,
  3. xxxId : xxxId
  4. }

在AJAX中用:

  1. function testAjaxS(){
  2. $.ajax({
  3. type:'post',
  4. url:'material/testAjax2',
  5. //json字符串必须设置
  6. contentType:'application/json;charset=utf-8',
  7. //数据格式是json字符串
  8. //data:JSON.stringify(obj), // 这样会出错,发送的时候数据就会在后面多一个:,由此可得。我们仅仅用写对象即可!
  9.  
  10. data: obj,
  11. success:function(data){//返回json结果
  12. alert("success");
  13. }
  14.  
  15. });

/* ************************** 2016年3月14日 12:06:03 **************************
*/

方法前加了

  1. @ResponseBody 则方法參数中。不能直接使用对象 比如:
  1. <pre style="background-color:#ffffff;color:#000000;font-family:'Consolas';font-size:12.0pt;">

@ResponseBody

public RespJSON<Map> listJson(Map map, Product product// 这个不行!。。 @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "6") Integer pageSize)

  1.  

会报JSON反序列化错误

Springmvc JSON交互的更多相关文章

  1. 关于springmvc json交互产生的406错误

    产生错误的背景:springmvc使用<mvc:annotation-driven>进行配置,那么只要引入响应的json解析包就可以了.在pom中已经引入了如下: <dependen ...

  2. SpringMVC详解(六)------与json交互

    Json(JavaScript Object Notation),它是一种轻量级数据交换格式,格式简单,易于读写,目前使用特别广泛.那么这篇博客我们主要谈谈在 SpringMVC 中,如何对 json ...

  3. SpringMVC框架五:图片上传与JSON交互

    在正式图片上传之前,先处理一个细节问题: 每一次发布项目,Tomcat都会重新解压war包,之前上传过的图片会丢失 为了解决这个问题:可以不在Tomcat下保存图片,而是另找一个目录. 上传图片: & ...

  4. springMVC的高级数据绑定,以及json交互,全局异常配置,

    一.窄化请求映射 1.在class上添加@RequestMapping(url)指定通用请求前缀, 限制此类下的所有方法请求url必须以请求前缀开头,通过此方法对url进行分类管理. 如下: @Con ...

  5. springmvc实现json交互 -requestBody和responseBody

    json数据交互 1.为什么要进行json数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. 2. ...

  6. Ajax json交互和SpringMVC中@RequestBody

    Ajax json交互和SpringMVC中@RequestBody 标签: 背景 自己提供出去得接口中参数设置为@RequestBody VipPromotionLog vipPromotionLo ...

  7. SpringMVC之JSON交互

    #什么是json? json是一种用于储存数据格式,是js脚本语言的子集. #json的作用? 它可以传递对象.数组等数据结构.如果是单个数据,则要用数组,不用对象,因为对象都是键值对的 方式去存储, ...

  8. springMVC+json构建restful风格的服务

    首先.要知道什么是rest服务,什么是rest服务呢? REST(英文:Representational State Transfer,简称REST)描写叙述了一个架构样式的网络系统.比方 web 应 ...

  9. SpringMVC-05 Json交互处理

    SpringMVC-05 Json交互处理 Json 1.什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别 ...

随机推荐

  1. ACdream 1157 Segments

    Segments Time Limit: 2000ms Memory Limit: 10000KB This problem will be judged on ACdream. Original I ...

  2. C#-WebService基础01

    来自为知笔记(Wiz)

  3. ida动态调试so,在init_array和JNI_ONLOAD处下断点

    本文涉及到的apk.请在github下载https://github.com/jltxgcy/AliCrack/AliCrackme_2.apk. 0x00 怎样在JNI_ONLOAD下断点.參考安卓 ...

  4. poj3071之概率DP

    Football Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2667   Accepted: 1361 Descript ...

  5. ThinkPHP5.0最最最最最简单实例

    ThinkPHP5.0最最最最最简单实例 一.效果图 二.操作步骤 1.用mysql数据库建立数据库 2.按照ThinkPHP官网的指示装好ThinkPHP5.0 tp5里面的目录结构如下: 3.配置 ...

  6. [JZOJ 5905] [NOIP2018模拟10.15] 黑暗之魂(darksoul) 解题报告 (拓扑排序+单调队列+无向图基环树)

    题目链接: http://172.16.0.132/senior/#main/show/5905 题目: oi_juruo热爱一款名叫黑暗之魂的游戏.在这个游戏中玩家要操纵一名有 点生命值的无火的余灰 ...

  7. C++之易混淆知识点二

    1.数据抽象与封装 数据抽象是一种接口和实现相分离的编程技术,设计者关心的是如何实现这些接口,而使用者仅仅知道这些接口,抽象地考虑这些接口做什么的就可以了,不必去考虑如何实现这一层次. 封装是将低层次 ...

  8. 前端的console.log的效果写法

    不说废话,直接上代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...

  9. 【原创】关于class.forname

    连接数据库前都要调用一下class.forname("driverName");然后使用DriverMnager获取连接,这是为什么呢? 首先jdbc标准要求,每个驱动必须向Dri ...

  10. cuda float atomic操作

    atomic add.用第二个,暂时还没弄明白 #ifdef FLOAT #define T float #else #define T int #endif #ifdef FORUM __devic ...