(功能:前端存储选中的下拉框的数据然后将数据全部给后端处理)
这是前端的代码:
//监听提交
form.on('submit(saveRoleForm)', function(data){
//数据的提交,ajax方式
if(data.field.status=="on"){data.field.status=0}
else {data.field.status=1}
console.log(data.field);
$.ajax({
url: 'saveRole',//地址
dataType: 'json',//数据类型
type: 'POST',//类型
data:data.field,
//请求成功
success: function (result) {
if(result.code==0){
var checkedData=tree.getChecked('demoId1');
$.ajax({
type:"post",
url:"setAuthorityByKey"+"/"+data.field.roleKey,
dataType:"json",
data:"parms="+JSON.stringify(checkedData),
success:function(data){
layer.msg(data);
},
error:function (data) {
layer.msg(data);
}
});
//关闭弹出层
layer.closeAll();
//显示添加成功消息
layer.msg(result.message,{icon:1});
//重新加载数据表格
myTable.reload();
}else if(result.code==1)
{
//关闭弹出层
layer.closeAll();
layer.msg(result.message,{icon:5});
}
else if(result.code==2)
{
layer.msg(result.message,{icon:5});
$("#roleKey1").val(data.field.roleKey);
}
else{
layer.msg(result.message,{icon:5});
$("#roleName1").val(data.field.roleName);
}
}
});
return false;
});
这是后端的代码:
@RequestMapping(value="/setAuthorityByKey/{roleKey}",produces="application/json; utf-8")
@ResponseBody
public int setAuthorityByKey(String parms, @PathVariable String roleKey)
{
Role role=roleBizImpl.selectByRoleKey(roleKey);
Integer roleId=role.getRoleId();
System.out.println("aaaa:"+parms.toString());
System.out.println("bbbbbbbb"+roleId);
List<LayUiTree> authorityTree=JSON.parseArray(parms,LayUiTree.class);
System.out.println("----"+authorityTree.toString());
List<Integer> stringList= returnTree(authorityTree);
System.out.println("******"+stringList);
int i=0;
for(Integer menuId:stringList){
i=roleBizImpl.insertMenuRoleId(roleId,menuId);
}
if(i==1)
return 0;
else
return 1;
}
后端代码里有个参数 String parms,然而前端却没有对应的接口(也就是没有一个parms的键值)
于是用一个土方法:直接在前端写一个给后端。
然后就可以了。。。(这个坑折磨了一个下午最后被一个高中同学解决,主要是因为前端传来的值的键值是不固定的)
由于此刻是所有各种类型的值都传过来所以得在控制层或者是业务层进行筛选最终选出自己想要的数据并进行处理。