JSON对象和JSON字符串

在SpringMVC环境中,@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,用 JSON.stringify(data)的方式就能将对象变成字符串。

同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端!

Content-Type

服务器为什么会对表单提交和文件上传做特殊处理,因为表单提交数据是名值对的方式,且Content-Type为application/x-www-form-urlencoded,而文件上传服务器需要特殊处理,
普通的post请求(Content-Type不是application/x-www-form-urlencoded)数据格式不固定,不一定是名值对的方式,所以服务器无法知道具体的处理方式,所以只能通过获取原始数据流的方式来进行解析。

jquery在执行post请求时,会设置Content-Type为application/x-www-form-urlencoded,所以服务器能够正确解析,而使用原生ajax请求时,如果不显示的设置Content-Type,那么默认是text/plain,这时服务器就不知道怎么解析数据了,所以才只能通过获取原始数据流的方式来进行解析请求数据。

一、传数组

var list=[];
list.push('132');
list.push('132');
$.ajax({
url:'stopUsePrice.do?isdebug=true',
type:'POST',
contentType:"application/json",
data:JSON.stringify(list),
dataType:'json',
success:function(data){ }
})

  

二、对象集合

var model;
model={"Id":"555","AuditId":"666"};
var saveDataAry=[];
saveDataAry.push(model);
$.ajax({
url:'stopUsePrice.do?isdebug=true',
type:'POST',
contentType:"application/json",
data:JSON.stringify(saveDataAry),
dataType:'json',
success:function(data){ }
})

  

public class FomfSupperPriceMethodAdModel implements IModel {
/** 版本号 */
private static final long serialVersionUID = 1L; /** 主键ID */
@JsonProperty("Id")
private String id; /** 报价主表ID */
@JsonProperty("AuditId")
private String auditId; }

  

也可以用键值对来接收

三、组合参数

var model;
model={"Id":"555","AuditId":"666"};
var saveDataAry=[];
saveDataAry.push(model);
saveDataAry.push(model);
$.ajax({
url:'stopUsePrice.do?isdebug=true',
type:'POST',
contentType:"application/x-www-form-urlencoded; charset=UTF-8",
//这里不是application/json,可以不写
data:{aa:JSON.stringify(saveDataAry),bb:"bb"},
// 可以传递多个参数,但此时的users内容与另外一个参数:aa 的内容一起传递,所以后台解析为字符串
// 后台接收的aa内容:[{"Id":"555","AuditId":"666"},{"Id":"555","AuditId":"666"}]
// 后台接收的bb内容:"bb"
//data:JSON.stringify(saveDataAry),
dataType:'json',
success:function(data){ }
})

  

组合参数优化

var delayDate = $("#delay_date").val();
var delayDateDis=new Date(Date.parse(delayDate.replace(/-/g,"/"))); var ids=[];
ids.push("cee1c898d3384800acee6b5fdd1bad31");
ids.push("cee1c898d3384800acee6b5fdd1bad32"); layer.confirm('是否确定延长报价名称为【'+ names +'】的报价至 : <br><br>'+delayDate, {
btn: ['确定', '取消']
},
function(index, layero){
$.ajax({
url:'delayTime.do?isdebug=true',
type:'POST',
//contentType:"application/x-www-form-urlencoded; charset=UTF-8",
data:{Ids:JSON.stringify(ids),delayDate:delayDateDis},
dataType:'json',
success:function(data){
layer.close(index);
if(data.StatusCode == 'success'){
alert(data.Data);
select_q();
}
}
})
},
function(index){
layer.close(index);
});

  

springMVC通过ajax传参到后台的更多相关文章

  1. jq中的ajax传参

        一.   jq中的Ajax传参有两种           1.通过url地址来传参    2.通过data来传递参数 1. url来传递参数 function GetQuery(id) { | ...

  2. Ajax传参讲解

    客户端和服务器 1.请求:request 2.响应:response 服务器响应事件:onreadystatechange() send() 用于向后台传递参数: Ajax的请求方式 get:    ...

  3. jq ajax传参的两种方式

    第一种   在url ? 后通过拼接传参   第二种 通过data传参 (1)第一种方法:(通过url传参) function GetQuery(id) { if (id ==1||id==7) { ...

  4. angularjs向后台传参,后台收不到数据

    angularjs中封装了一个$http服务,用来请求远程资源 参见:HTTP API 其中封装过的$http.post和$http.get使用起来比较方便 后台是php,用$_POST['name' ...

  5. ajax传参到实体类对应字段

    之前看公司的代码,从页面ajax传参数到接口类,接口类用一个实体接收.我一直以为c#会自动识别,赋值到同名的字段. 我曾和朋友讨论过,双方辩论.朋友认为c#没有这种功能,没有这样高级匹配的机制.而我因 ...

  6. ajax 传参 乱码问题

    http://blog.csdn.net/yiyuhanmeng/article/details/7548505 开发一直用firfox网页,调试什么的都很方便.所以遇到了浏览器之间的兼容问题.url ...

  7. ajax传参data里面的键是一个变量的解决方法

    直接用这种方式来传参,比如bean中有字段 username password,则是 data[username] = "用户名"; data[password] = " ...

  8. 超全table功能Datatables使用的填坑之旅--2:post 动态传参: 解决: ajax 传参无值问题.

    官网解释与方法:1 当向服务器发出一个ajax请求,Datatables将会把服务器请求到的数据构造成一个数据对象. 2 实际上他是参考jQuery的ajax.data属性来的,他能添加额外的参数传给 ...

  9. ajax传数组到后台,后台springmvc接收数组参数

    var   ids= new Array();  $("input[class='detailCheck']:checked").each(function(i,k){   var ...

随机推荐

  1. BZOJ - 2844 线性基

    题意:求给定的数在原数组中的异或组合中的排名(非去重) 因为线性基中\(b[j]=1\)表示该位肯定存在,所以给定的数如果含有该位,由严格递增和集合枚举可得,排名必然加上\(2^j\)(不是完全对角就 ...

  2. Emit生成特定接口的类

    参考 动态生成类 http://www w2bc com/Article/44799 http://www.cnblogs.com/yingql/archive/2009/03/24/1420914. ...

  3. 1085 PAT单位排行 (25 分

    每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N(≤),即考生人数.随后 N 行,每行按下列格式给出一个考生的信息: 准 ...

  4. [转] CSS 选择器参考手册

    [From] http://www.w3school.com.cn/cssref/css_selectors.asp CSS3 选择器 在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素. ...

  5. URL篇之相对URL

    URL有两种方式:绝对的和相对的. 绝对URL中包含有访问资源所需的全部信息,是访问网络资源必须的. 相对URL是不完整的,要从相对URL中获取访问资源所需的全部信息,就必须相对于另一个被称为其基础( ...

  6. (转)淘宝系统信息采集和监控工具tsar

    淘宝系统信息采集和监控工具tsar 项目地址:https://github.com/alibaba/tsar 一.介绍 Tsar是淘宝的系统信息采集和监测工具,主要用来收集服务器的系统信息(如cpu, ...

  7. Oracle 单实例数据库安装和real application clusters数据库安装的区别

    在想了解Oracle单实例数据可和RAC数据库前,请确保你已经知道了数据库和实例的关系,如果不了解,请参考Oracle 数据库实例和数据库. 单实例数据库模式 单实例模式下,一个数据库只能通过一个实例 ...

  8. ElasticSearch mapping中字段属性总结

  9. Design Pattern理解碎片

    开发封闭原则(Open-Closed Principle OCP)Software entities(classes,modules,functions etc) should open for ex ...

  10. JS常用的设计模式(2)——简单工厂模式

    简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况. 说的通俗点,就像公司茶水间的饮料 ...