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. 搭建Redis报错

    2018-10-26 报错信息 You need tcl 8.5 or newer in order to run the Redis test 原因 缺少 tcl 插件 解决方式 wget http ...

  2. 2.3 if switch for等流程控制

    if条件中可以写多个语句,语句的作用域仅限于if,不可在if之外的地方使用 package main import ( "fmt" "io/ioutil" ) ...

  3. Python学习 day08

    一.open打开文件 文件操作包含以下三个步骤: 1.文件路径 2.编码方式 3.操作方式:‘’只读‘’.“只写”.“读写” 等 1.只读 r (mode默认值) 例: f = open('d:\py ...

  4. IE Error: '__doPostBack' is undefined 问题解决

    突然遇到个很奇怪的BUG,翻页控件,其他浏览器一切正常,IE无法翻页,会提示 '__doPostBack' is undefined 后来搜索发现: [原文發表地址] Bug and Fix: ASP ...

  5. daterangepicker

    官方文档 http://www.daterangepicker.com/#examples 与angular结合 html <div date-range-picker class=" ...

  6. Android触摸事件传递机制

    简单梳理一下Android触摸事件传递机制的知识点. 一.View与ViewGroup的关系 View和ViewGroup二者的继承关系如下图所示: View是Android中最基本的一种UI组件,它 ...

  7. Linux之FTP篇

    内容简介: vsftpd的安装 目录介绍 配置参数解释 锁定用户目录 其他用户不能登录 -------------------------------------------------------- ...

  8. 基于 CentOS 搭建 WordPress 个人博客

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 腾讯云提供了开发者实验室帮助用户搭建 WordPress 个人博客,教程内容如下,用户可以点击开发者实验室快速上机完成实验. 准备 LNMP ...

  9. jQuery中的动画——《锋利的JQuery》

    自CSS3以来,主流网站开始偏向于扁平风格和动画效果,这时就可以jQuery的动画就可以发挥其长处了,灵活的应用其动画API,让我们可以设计出很多绚丽的效果.下面,让我们来列举一些jQuery常用的动 ...

  10. 很有用的PHP笔试题系列三

    1. 什么事面向对象?主要特征是什么? 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰.主要特征:封装.继承.多态. 2. SESSION 与 COOKIE的区别是什么,请从 ...