通过Ajax进行POST提交JSON类型的数据到SpringMVC Controller的方法
现在在做的项目用到了SpringMVC框架,需要从前端angular接收请求的JSON数据,为了测试方便,所以直接先用AJAX进行测试,不过刚开始用平时用的ajax方法,提交请求会出现415或者400错误,经过研究,终于可以了,现在做个总结。
js代码:
-
function postSimpleData() {
-
$.ajax({
-
type: "POST",
-
url: "Service/SimpleData",
-
contentType: "application/json", //必须有
-
dataType: "json", //表示返回值类型,不必须
-
data: JSON.stringify({ 'foo': 'foovalue', 'bar': 'barvalue' }), //相当于 //data: "{'str1':'foovalue', 'str2':'barvalue'}",
-
success: function (jsonResult) {
-
alert(jsonResult);
-
}
-
});
-
}
-
function login(){
-
$.ajax({
-
url: "Service/login",
-
type: "POST",
-
contentType: "application/json",
-
dataType: "json",
-
data: JSON.stringify({
-
MachineIP:"127.0.0.1",
-
AppTag:"4",
-
RequestInfo:{
-
StaffCode:"",
-
Password:"",
-
StaffCard:"01411"
-
},
-
}),
-
async: true,
-
success: function(data) {
-
var ss = JSON.stringify(data);
-
$("#result").val(ss);
-
console.log(ss);
-
}
-
});
-
}
-
function postEmployees() {
-
$.ajax({
-
type: "POST",
-
url: "Service/Employees",
-
contentType: "application/json",
-
dataType: "json",
-
data: JSON.stringify({ "Employees": [
-
{ "firstName": "Bill", "lastName": "Gates" },
-
{ "firstName": "George", "lastName": "Bush" },
-
{ "firstName": "Thomas", "lastName": "Carter" }
-
]
-
-
}),
-
success: function (jsonResult) {
-
alert(jsonResult);
-
}
-
});
-
}
JAVA Controller代码:
-
@RequestMapping(value = "/SimpleData", method = RequestMethod.POST)
-
@ResponseBody
-
public ActionResult SimpleData(string foo, string bar) {
-
return Json("SimpleData", JsonRequestBehavior.AllowGet);
-
}
-
-
@RequestMapping(value = "/login", method = RequestMethod.POST)
-
@ResponseBody
-
public ResponseProtocolMap login(@RequestBody JSONObject requestJson, HttpServletRequest request) {
-
ResponseProtocolMap responseProtocolMap = null;
-
String machineIP = RequestJsonUtils.getMachineIP(requestJson);
-
String appTag = RequestJsonUtils.getAppTag(requestJson);
-
JSONObject requestInfo = RequestJsonUtils.getRequestInfo(requestJson);
-
if (requestInfo == null) {
-
responseProtocolMap = new ResponseProtocolMap("-1", "参数错误");
-
} else {
-
String staffCode = RequestJsonUtils.getValueByKey(requestInfo, "StaffCode");
-
String password = RequestJsonUtils.getValueByKey(requestInfo, "Password");
-
String staffCard = RequestJsonUtils.getValueByKey(requestInfo, "StaffCard");
-
responseProtocolMap = sysLoginService.login(staffCode, password, staffCard, appTag, request);
-
}
-
return responseProtocolMap;
-
}
-
-
@RequestMapping(value = "/Employees", method = RequestMethod.POST)
-
@ResponseBody
-
public ActionResult Employees(List<Employee> Employees) {
-
return Json("Employees", JsonRequestBehavior.AllowGet);
-
}
-
public class Employee{
-
public string FirstName { get; set; }
-
public string LastName { get; set; }
-
}
值得注意的有2点:
1)Ajax 选项中
contentType: "application/json"
这一条必须写,表明request的数据类型是json。
而
dataType: "json"
这一条表示返回值的类型,不是必须的,且依据返回值类型而定。
2)选项中
data: JSON.stringify({ 'foo': 'foovalue', 'bar': 'barvalue' })
很多时候我们将数据写作:
{ 'foo': 'foovalue', 'bar': 'barvalue' }
这样会导致错误,因为js会默认将这个json对象放到表单数据中,故而导致controller接收不到。
有两种办法处理:第一种方式是用JSON.stringify()函数,其中JSON被Ecmascript5定义为全局对象。
第二种方式是直接用双引号包裹起来,比如data: "{'str1':'foovalue', 'str2':'barvalue'}"。
通过Ajax进行POST提交JSON类型的数据到SpringMVC Controller的方法的更多相关文章
- springmvc接收JSON类型的数据
1.在使用AJAX传递JSON数据的时候要将contentType的类型设置为"application/json",否则的话会提示415错误 2.传递的data需要时JSON类型的 ...
- springMVC参数绑定JSON类型的数据
需求就是: 现在保存一个Student,并且保存Student的friend,一个student会有多个朋友,这里要传递到后台的参数是: var friends = new Array(); var ...
- 关于ajax 进行post提交 json数据到controller
首选需要参考的两个博客: www.cnblogs.com/Benjamin/archive/2013/09/11/3314576.html http://www.cnblogs.com/quanyon ...
- 通过Ajax post Json类型的数据到Controller
View function postSimpleData() { $.ajax({ type: "POST", url: "/Service/SimpleData&quo ...
- jquery ajax提交json格式的数据,后台接收并显示各个属性
我的表单如下: <form onsubmit="return false"> <ul> <li><span>用户名</span ...
- Mysql里查询字段为Json格式的数据模糊查询以及分页方法
public void datagrid(CustomFormEntity customForm,HttpServletRequest request, HttpServletResponse res ...
- 9.SpringMVC和json结合传递数据 && 10.SpringMVC获取controller中json的数据
- SpringMVC——对Ajax的处理(包含 JSON 类型)
一.首先要搞明白的一些事情. 1.从客户端来看,需要搞明白: (1)要发送什么样格式的 JSON 数据才能被服务器端的 SpringMVC 很便捷的处理,怎么才能让我们写更少的代码,如何做好 JSON ...
- Struts2+Jquery实现ajax并返回json类型数据
来源于:http://my.oschina.net/simpleton/blog/139212 摘要 主要实现步骤如下: 1.JSP页面使用脚本代码执行ajax请求 2.Action中查询出需要返回的 ...
随机推荐
- IDEA中的maven web 项目中如何设置自己的本地仓库
我们在创建maven项目的时候如何不使用系统指定的本地仓库,而使用自己设置的仓库呢,这里小女子就来进行讲解一下吧! 讲解一:你要想找到settings.xml你就要自己我去官网上去下载apache-m ...
- USACO2002 Open:雄伟的山峦
简要题意: 奶牛们在落基山下避暑,从它们的房子向外望去,可以看到N 座山峰构成的山峦,奶牛发现每座山峰都是等腰三角形,底边长度恰好是高度的两倍.所以山峰的顶点坐标可由两个底部端点求出.设i 座第山峰的 ...
- PasswordHelper 对user对象的password进行加密重设
public class PasswordHelper { private RandomNumberGenerator randomNumberGenerator = new SecureRandom ...
- vsphere平台windows虚拟机克隆的小插曲(无法登陆系统)
问题: 1.克隆完windows虚拟化后输入法乱码. 2.开启远程的情况下远程登录输入正确的密码也无法登录. 解决: 1.更改管理员用户密码(不输入原win7密码更改win7密码). 2.重新启用管理 ...
- 新手教程:电信+广电(或其他运营商)双WAN设置
由于国内不同运营商之间互联互通存在问题,假如用联通的线路去访问电信的站点那么会比较卡,反之亦然:所以如果两个WAN的线路不是同一个运营商,一般都是建议用户双WAN模式选为“智能路由”.经过本人测试发现 ...
- Python 数据结构与算法 —— 哈弗曼树
1. 从扩充二叉树到哈弗曼树 扩充二叉树:对二叉树 T,加入足够多的新叶节点(而不是任意),使 T 的原有结点都变成度数为 2 的分支节点,得到的二叉树称为 T 的扩充二叉树. 对于扩充二叉树而言, ...
- Kinect 开发 —— 近距离探测
如何将Kinect设备作为一个近距离探测传感器.为了演示这一点,我们处理的场景可能在以前看到过.就是某一个人是否站在Kinect前面,在Kinect前面移动的是人还是什么其他的物体.当我们设置的触发器 ...
- ajax起步 (二)
Ajax的关键在于XMLHttpRequest对象,如下基本用法: <!DOCTYPE html> <html> <head> <meta charset=& ...
- 利用JAVA反射机制实现调用私有方法
1.fragment是AccessibilityFragment的對象.须要被調用的方法的類. setAccessible(true)并非将方法的訪问权限改成了public.而是取消java的权限控制 ...
- 通过一个案例彻底读懂10046 trace--字节级深入破解
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/37840583 2014.7.23晚20:30 Oracle support组猫大师分享&l ...