spring mvc返回json格式需要引入的jar
方法一:
@RequestMapping(value="/testjson") @ResponseBody public UserForm testjson(@RequestBody UserForm user){ // 打印接收的JSON格式數(shù)據(jù) System.out.println("uname=" + user.getUname()); // 返回JSON格式的響應 return user; }
對應的前端:
注意加: contentType : "application/json;charset=utf-8"
$.ajax({ //請求路徑 url : "/testjson", //請求類型 type : "post", //data表示發(fā)送的數(shù)據(jù) data : JSON.stringify({ uname : uname, upass : upass, }), //定義發(fā)送請求的數(shù)據(jù)格式為JSON字符串 contentType : "application/json;charset=utf-8", //定義回調(diào)響應的數(shù)據(jù)格式為JSON字符串,該屬性可以省略 dataType : "json", //成功響應的結(jié)果 success : function(data) { console.log(data); if (data != null) { alert("輸入的用戶名:" + data.uname + ",密碼:" + data.upass); } } });
方法二:
@RequestMapping(value = "ajaxto") @ResponseBody public Map ajaxto(UserForm user,String uname){ Map<String, Object> map = new HashMap<>(); map.put("uname", uname); map.put("upass", user.getUpass()); map.put("array", new String[]{"a", "b", "c"}); return map; }
前端:
去: contentType : "application/json;charset=utf-8"
$.ajax({ //請求路徑 url : "/ajaxto", //請求類型 type : "post", //data表示發(fā)送的數(shù)據(jù) data : { uname : uname, upass : upass, }, //定義發(fā)送請求的數(shù)據(jù)格式為JSON字符串 // contentType : "application/json;charset=utf-8", //定義回調(diào)響應的數(shù)據(jù)格式為JSON字符串,該屬性可以省略 dataType : "json", //成功響應的結(jié)果 success : function(data) { console.log(data); if (data != null) { alert("輸入的用戶名:" + data.uname + ",密碼:" + data.upass); } } });
總結(jié):1.如果用JSON.stringify()將對象轉(zhuǎn)成字符串,就需要在ajax請求中指定contentType 為 application/json,且后臺需添加 @RequestBody注解;
2.如果直接傳json對象則跟上面的相反,不能指定contentType為 application/json,其默認類型是 application/x-www-form-urlencoded