前后台最常用的交互方式是表单交互,而前台语言是js,后台为Java语言;显然,二者的原理、机制、语法并不兼容,二者产生的对象也不能被对方解读。在网络传输中,使用的是请求-响应,即无论后台传递什么类型的数据,也不论前台传回的什么数据,网络层均当作字符串进行处理。所以,前后台传递数据就只能使用字符串,即各自完成一个转换过程,将要发送的数据转为字符串,将要收到的字符串解析成自己的对象。因为传输的字符会涉及前后台双方的解析和处理,所以双方最好使用一种通用的规则来进行编辑、转换字符串,这个标准或协议就是JSON,JSON用于交换数据,是一种string,一种独立与平台的数据格式。即前台需要将数据转为JSON发送给后台,后台使用JSON解析数据,转换成自己需要的类型
Fastjson是阿里的开源JSON解析库,可以解析JSON格式的字符串,支持将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean
Fastjson API:https://www.w3cschool.cn/fastjson
Fastjson:
toJSONString:将Java对象序列化为JSON字符串
JS:
JSON.stringify:将 JavaScript 值转换为 JSON 字符串
后代向前台传递数据:
@RequestMapping("/list") @ResponseBody public DataGridResult getPage(@RequestParam Map<String, Object> params){ //查询列表数据 Query query = new Query(params); return sysRoleService.getPageList(query); }
前台向后台提交数据:
$.ajax({ type: 'POST', url: url, data: JSON.stringify(vm.role), success: function(r){ if(r.code == 0){ layer.alert('操作成功', function(index){ window.location.href = 'index'; }); }else{ layer.alert(r.msg); } } });
@RequestMapping("/save") @ResponseBody public R save(@RequestBody SysRole role){ sysRoleService.save(role); return R.ok(); }