前端处理
'click .email': function (e, value, row, index) { var info=JSON.stringify(row); alert(info) $.ajax({ type:"post", url:"/Project/mailController/receive", data:info, contentType: "application/json", dataType : "text", success(){ }, error : function(XMLHttpRequest, textStatus, errorThrown) { //请求失败时执行该函数 alert(XMLHttpRequest); alert(textStatus); alert(errorThrown); } }) },
后端处理字符串导阿里巴巴的包
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.41</version> </dependency>
后端代码
@RequestMapping("receive") public String receive(@RequestBody String receiveInfo){ System.out.println(receiveInfo); JSONObject jsonObject = JSON.parseObject(receiveInfo); System.out.println(jsonObject.get("meetingAddress")); return "manage"; }
最后说点干货(对于我说是,困惑了我一天)
前台传的json数据如果有【】,那它是数组,不能用上面的获取方法,要遍历数组,才可以获取
第一条是json字符串,第二条是json数组,json数组遍历方法如下:
List<HashMap> list=JSON.parseArray(receivep,HashMap.class); for(int i=0;i<list.size();i++){ System.out.println(list.get(i).get("email")); }
//json字符串转化为对象组
JSONArray jsonArray= JSONArray.fromObject(listStr);
List<Meeting> meetingList = (List<Meeting>)JSONArray.toCollection(jsonArray, Meeting.class);
bug总结
1.若传到后台的数据是16进制,则需要前台的数据转化为json,用
JSON.stringify(row),