前端Ajax传递Json数据,后端处理两种⽅式
在这⾥只讨论在前端通过Ajax远程传输Json数据的,不讨论通过form的形式传递数据
第⼀种⽅式:
  前端传递过来的数据刚好和我们的bean实体对象属性⼀致,则可以使⽤对象的形式接受。
前端写法:
1  $().ready(function(){
2var obj = JSON.stringify({'userNo':'121589','processId':'15','processName':'测试审批','description':'这是⼀个测试'});
3      alert(obj);
4
5//后台使⽤对象的形式接受
6      $.ajax({
7            url: "testJsonOne",
8            type: "post",
9            data: obj,
10            contentType: 'application/json;charset=utf-8',
11            success : function(data){
12                alert("haha");
13            }
14        });
15
16  });
特别要注意的点:
  1. contentType: 'application/json;charset=utf-8' ,指定数据是以Json的形式传递
  2.要传递的data,要是⼀个Json格式的字符串,最好先创建⼀个json对象,然后使⽤JSON.stringify()来转换成字符串形式
后台写法:
//对象形式接受前端数据
@RequestMapping(value= "/testJsonOne",method = RequestMethod.POST)
@ResponseBody
public String testJson(@RequestBody PoMessageVo poMessageVo) {
System.out.String());
return "success";
}
注意点:
  1.前端数据和bean对象属性要⼀致
  2.会使⽤到@RequestBody注解,⽽这个注解要先导⼊jar包的,分别是jackson-core-asl-xxx.jar和jackson-mapper-asl-xxx.jar两个包
  3.注解⽤法不了解的话,百度⼀下
第⼆种⽅式:
  有可能前端传递过来的数据很多很复杂,则我们可以在后端使⽤字符串的形式接受,具体的处理,我们在后端⾃⼰再处理。
前端写法:
//后台使⽤字符串的形式接受的
$.ajax({
url: "testJsonTwo",
type: "post",
为什么要用ajax
//data: {jsonStr:'nihao'},
data: {jsonStr:obj},
//data: obj,
//contentType: 'application/json;charset=utf-8',
success : function(data){
alert("haha");
}
});
注意与上⾯的做⽐较:
  1. jsonStr指定后台只能以这个名称接受
  2. Ajax上不⽤指定contentType: 'application/json;charset=utf-8'
后台写法:
//以字符串的形式接受前端数据
@RequestMapping(value= "/testJson",method = RequestMethod.POST) @ResponseBody
public String testJson(String jsonStr) {
System.out.println(jsonStr);
//这⾥可以使⽤JsonMapper来处理jsonStr,⽐如转成需要的bean对象return "success";
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。