spring 接收前台ajax传来的参数的几个方法
知识补充
JSON.stringify(), 将value(Object,Array,String,Number...)序列化为JSON字符串
JSON.parse(), 将JSON数据解析为js原生值
toJSON(), 作为JSON.stringify中第二个参数(函数过滤器)补充
1.传过来的单一的参数 不设计json
<script type="text/javascript"> $(function(){ var params = {name:"aaa"}; $.ajax({ type: "post", url: "/paike/cltc/paiKeTest", data: params,//非常重要的一步 datatype: "json", success:function(){ alert(3); } }) }) </script>
springMvc后台接收方式为
@RequestMapping(value = "paiKeTest",method = RequestMethod.POST) @ResponseBody public String emrSubmit( @RequestParam(value="name")String name){ System.out.println("JSONTOJAVAOBJ==================="+name); return null; }
2.$符号前面的都为页面的参数
<script type="text/javascript"> $(function(){ var mall = { classid: $("#classid").val().trim(), teacherid: $("#teacherid").val().trim(), courseid: $("#courseid").val().trim(), time: $("#time").val().trim(), start: $("#start").val().trim(), end: $("#end").val().trim() }; $.ajax({ type: "post", url: "/paike/cltc/paiKe", data:{ds:JSON.stringify(mall)},//非常重要的一步 传过来的市String类型的json datatype: "json", success: function (){ alert(1); } }) }) </script>
springMvc接收值得方式为:
@RequestMapping(value = "paiKe",method = RequestMethod.POST) @ResponseBody public String paiKe(@RequestParam(value="ds")String str) { System.out.println("++++++TTTT============"); System.out.println(str); return null; }
*重点:后台解析:
1.导入相关jar包
<1> 单条解析
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
User user = (User) JSONObject.toBean(jsonObject, user.class);
<2> 多条用数组解析
前台json格式的数据如何传入后台
1. 将要传入后台的数据组装成JSON格式的字符串:
var jsonStr = [{'name':'jim' , 'age':20} , {'name':'king' , 'age':26},{'name':'jge' , 'age':30}]
2. 使用jQuery的ajax请求后台
jQuery.ajax({ type: "post", url: url, dataType : 'json', data : {'mydata':jsonStr}, success: function(data,textStatus){ alert("操作成功"); }, error: function(xhr,status,errMsg){ alert("操作失败!"); } });
3.后台数据的接收与解析:
// 解析多条 JSONArray jsonArray = JSONArray.fromObject(jsonStr); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); Cltc cltc = (Cltc) JSONObject.toBean(jsonObject, Cltc.class); }
String jsonStr = ServletActionContext.getRequest().getParameter("mydata");
JSONArray jsonArray = JSONArray.fromObject(jsonStr);
for(int i=0;i<jsonArray.length(); i++){
JSONObject jsonJ = jsonArray.getJSONObject(i);
jsonJ.getInt("name");
jsonJ.getString("age");
}
4. 操作完成
字符串和json对象和json对象数组相互转换
var jsonStr = "{\"userId\":\"001\"}"; // json对象字符串
var jsonArryStr = "[{\"userId\":\"001\"},{\"userId\":\"002\"}]"; // json数组字符串
var jsonObj = JSON.parse(jsonStr); // 字符串转为json对象
var jsonArry = JSON.parse(jsonArryStr); // 字符串转为json数组
var jsonStr = JSON.stringify(jsonObj); // json对象转为字符串
var jsonArryStr=JSON.stringify(jsonArry);// json数组转为字符串