场景:前后端分离跨域,前端使用axios提交post请求,参数json字串;服务端getRawData获取参数,转Model 对象处理数据。
前提:服务端设置了CORS 允许跨域请求
参考 http://www.jfinal.com/share/1137 感谢作者~ suxiaoqiuking
【示例】:
axios提交请求:
jobj 是提交的业务参数 json对象:
let jobj = {} jobj.type = 0 jobj.level = 2 jobj.name = '化妆盒' jobj.parent_id = 16
接口:
// 新增货品类目项 export const apiPostSpuCateItem = (jobj) => { return new Promise((resolve, reject) => { axios.request({ url: 'goods/cate/addSpuCateItem', method: 'post', headers: { 'Content-Type': 'text/plain' //这里重点 }, data: JSON.stringify(jobj) }).then(res => { // 接口处理成功返回 ok 这里自定义处理返回结果 let rst = { isok: false, msg: '' } // state 为服务接口定义的返回属性 if (res.data.state === 'ok') { // 这里定义业务需要转译的状态值 rst.isok = true } else { rst.isok = false rst.msg = res.data.msg } resolve(rst) }) })
jfinal 服务端 Controller:
/** * 新增货品分类 */ public void addSpuCateItem(){ // 获取提交的json字串 参 String json = getRawData(); // 调用服务端处理 数据持久化 Ret ret = srv.addByModel(FastJson.getJson().parse(json, SpuCate.class)); renderJson(ret) ; }
处理结果:
参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS