Spring MVC Ajax Json
2017-12-24 09:21
169 查看
请求数据为空,响应数据json格式的字符串
@ResponseBody
当控制器处理后不需要进行页面跳转而是返回一些数据,则需要使用@ResponseBody
@ResponseBody表示Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
控制层:
@RequestMapping(value ="/testAjax",method = RequestMethod.POST)
@ResponseBody
public TusertestAjax(){
Tuser user = newTuser();
user.setUname("tom");
user.setUpwd("123");
user.setUtype("VIP");
returnuser;
}
JS:
function testAjax(){
$.ajax({
url:"testAjax.do",
type:"post",
success:function(data_back){
//alert(data_back);//{"uname":"tom","upwd":"123","utype":"VIP"}
var
user= JSON.parse(data_back);
alert(user.uname);//tom
alert(user.upwd);//123
},
});
}
注意:
传输的数据是字符串(json格式),所以
请求前JSON.stringify(data) 将json对象转化为字符串。
响应后JSON.parse(str) 将字符串转化为json对象。datatype默认会将返回的数据当成字符串处理,如果指定dataType:"json",,jquery会自动帮我们把字符串转化为json对象,所以不需要JSON.parse(data_back);
请求数据键值对形式,响应数据为空
请求的数据比较简单(没有数组等嵌套)
此时不用指定contentType,默认:application/x-www-form-urlencoded,请求的data数据是key/value形式,多个key用&连接
控制层
@RequestMapping(value ="/testAjax",method = RequestMethod.POST)
@ResponseBody
public
voidtestAjax(Tuseruser){
System.out.println(user.getUname());//tom
System.out.println(user.getUpwd());//123
}
JS
function testAjax(){
$.ajax({
url:"testAjax.do",
type:"post",
data:"uname=tom&upwd=123",
success:function(){
alert(123);//123
},
});
}
请求数据json格式的字符串,响应数据为空
但是如果请求的数据有数组嵌套,则不能再使用简单的键值对进行数据的传输,需要用到json格式的字符串,需要指定contentType:application/json,并在控制层用@RequestBody注解进行数据匹配映射
@RequestMapping(value ="/testAjax",method = RequestMethod.POST)
@ResponseBody
public
void testAjax(@RequestBody Tuseruser){
System.out.println(user.getUname());//tom
System.out.println(user.getUpwd());//123
System.out.println(user.getSites()[0]);//北京
System.out.println(user.getSites()[1]);//上海
System.out.println(user.getSites()[2]);//广州
}
JS
function testAjax(){
var user= {
uname:"tom",
upwd:"123",
sites:["北京",
"上海",
"广州" ]
};
$.ajax({
url:"testAjax.do",
type:"post",
data:JSON.stringify(user),
contentType:"application/json",
success:function(){
alert(123);
4000
},
});
}
注意此时contentType:"application/json"需要与@RequestBody配对使用
@RequestBody
该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据自动绑定方法的形参对象上
这里把json格式的字符串自动映射给相应的对象上。
通俗讲就是:
键值对形式的请求没有走HttpMessageConverter解析器(普通键值对,服务器自动匹配)
Json字符串需要解析器的解析(毕竟是json格式的字符串可能包含数组,服务器看不懂)
@ResponseBody
当控制器处理后不需要进行页面跳转而是返回一些数据,则需要使用@ResponseBody
@ResponseBody表示Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
控制层:
@RequestMapping(value ="/testAjax",method = RequestMethod.POST)
@ResponseBody
public TusertestAjax(){
Tuser user = newTuser();
user.setUname("tom");
user.setUpwd("123");
user.setUtype("VIP");
returnuser;
}
JS:
function testAjax(){
$.ajax({
url:"testAjax.do",
type:"post",
success:function(data_back){
//alert(data_back);//{"uname":"tom","upwd":"123","utype":"VIP"}
var
user= JSON.parse(data_back);
alert(user.uname);//tom
alert(user.upwd);//123
},
});
}
注意:
传输的数据是字符串(json格式),所以
请求前JSON.stringify(data) 将json对象转化为字符串。
响应后JSON.parse(str) 将字符串转化为json对象。datatype默认会将返回的数据当成字符串处理,如果指定dataType:"json",,jquery会自动帮我们把字符串转化为json对象,所以不需要JSON.parse(data_back);
请求数据键值对形式,响应数据为空
请求的数据比较简单(没有数组等嵌套)
此时不用指定contentType,默认:application/x-www-form-urlencoded,请求的data数据是key/value形式,多个key用&连接
控制层
@RequestMapping(value ="/testAjax",method = RequestMethod.POST)
@ResponseBody
public
voidtestAjax(Tuseruser){
System.out.println(user.getUname());//tom
System.out.println(user.getUpwd());//123
}
JS
function testAjax(){
$.ajax({
url:"testAjax.do",
type:"post",
data:"uname=tom&upwd=123",
success:function(){
alert(123);//123
},
});
}
请求数据json格式的字符串,响应数据为空
但是如果请求的数据有数组嵌套,则不能再使用简单的键值对进行数据的传输,需要用到json格式的字符串,需要指定contentType:application/json,并在控制层用@RequestBody注解进行数据匹配映射
@RequestMapping(value ="/testAjax",method = RequestMethod.POST)
@ResponseBody
public
void testAjax(@RequestBody Tuseruser){
System.out.println(user.getUname());//tom
System.out.println(user.getUpwd());//123
System.out.println(user.getSites()[0]);//北京
System.out.println(user.getSites()[1]);//上海
System.out.println(user.getSites()[2]);//广州
}
JS
function testAjax(){
var user= {
uname:"tom",
upwd:"123",
sites:["北京",
"上海",
"广州" ]
};
$.ajax({
url:"testAjax.do",
type:"post",
data:JSON.stringify(user),
contentType:"application/json",
success:function(){
alert(123);
4000
},
});
}
注意此时contentType:"application/json"需要与@RequestBody配对使用
@RequestBody
该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据自动绑定方法的形参对象上
这里把json格式的字符串自动映射给相应的对象上。
通俗讲就是:
键值对形式的请求没有走HttpMessageConverter解析器(普通键值对,服务器自动匹配)
Json字符串需要解析器的解析(毕竟是json格式的字符串可能包含数组,服务器看不懂)
相关文章推荐
- Spring 3.2.* MVC通过Ajax获取JSON数据报406错误
- Spring MVC ajax json 415错误改正
- Spring 3.2.* MVC通过Ajax获取JSON数据报406错误
- springmvc+easyui Ajax提交返回json IE出现下载问题
- SpringMVC+json+ajax
- Spring MVC Maven 使用ajax传json数据
- Spring 3.2.* MVC通过Ajax获取JSON数据报406错误
- Ajax+SpringMVC+JSON登录验证
- Maven项目:Spring MVC + Ajax + Json + RequestBody:POST后台服务器接收前端JSON数据并注解到POJO内
- json 字符串转对象 springmvc +mybatis +ajax
- Spring 3.2.* MVC通过Ajax获取JSON数据报406错误
- SpringMvc+ajax 实现json格式数据传递
- Maven+SpringMVC+Hibernate+ajax:用ajax传递json到前台中文出现问号乱码问题
- springMvc+AJAX+JSON的增删改查
- spring mvc ajax json数据类型交互 小例子
- spring mvc @InitBinder(前台ajax传过来的json字符串后台无法接收)
- json 字符串转对象 springmvc +mybatis +ajax
- SpringMVC ajax JSON 中文乱码问题
- spring-mvc+ajax+json
- SpringMvc+Spring4+hibernate框架 ajax提交JSON数据Controller接收