虚拟世界行者日记 二

150 阅读2分钟

还是项目遇到的问题 1

  1. easyui datagrid的get请求,无法被ajax拦截器拦截。对于这种现象,因为浏览器端接收到了后端的响应,也就是请求响应的到达都没问题,因此排除了请求或响应发生错误的情况,所以认为该请求不是ajax请求。其响应内容如下。格式是没有问题的,表格datagrid所需要的两个字段total和rows也都有,以为数据和格式应该不是问题的根本。
{
	"code": 200,
	"message": "成功",
	"total": 0,
	"data": null,
	"rows": null
}
  1. 那么接下来应该怎么去对这些请求成功的时候进行拦截呢?难道真要每个easyui datagrid的get请求都写一个处理函数?那不是代码重复太多了。没好的办法哦,只能使用这种笨方法。然后又遇到了另外一个问题,该请求成功了,但是无法被datagrid的onLoadSuccess方法所捕获,这又是怎么回事?请求成功了,按道理可以到达这个方法的,难道对于datagrid来说,这个请求根本没有成功吗?请求和响应都有,难道还是数据有问题吗?试着把服务器的响应数据改成如下格式。null改成空数组。结果出乎意料,真的被onLoadSuccess方法捕获了,然后ajax的拦截器居然也可以拦截到该请求的响应了!!!原来一切错误的来源都是rows这个字段不能为null,没有数据也必须传递一个空的数组,否则就会出现意料之外的各种错误。但是还有一个疑惑,既然可以被ajax拦截器拦截,那么该请求还是ajax请求,那么为什么响应都到达浏览器了,却不能被拦截呢?就因为格式有问题这种原因吗?留待后续寻求答案
{
	"code": 200,
	"message": "成功",
	"total": 0,
	"data": [],
	"rows": []
}

项目中的问题 2

  1. 以下mysql的查询语句,当一个用户(account)对应多个角色(role),然后这多个角色里面,有重叠的菜单权限(menu)的时候,就有可能查出来重复的菜单,所以应该使用distinct关键字来过滤重复的菜单。
select distinct m.id, m.menu_name, m.menu_icon, m.menu_type, m.url, m.btn_id
FROM t_customer_account c
        LEFT JOIN t_customer_account_role ar
        ON c.id = ar.account_id
        LEFT JOIN t_customer_role r
        ON ar.role_id = r.id
        LEFT JOIN t_customer_role_menu rm
        ON r.id = rm.role_id
        LEFT JOIN t_customer_menu m
        ON rm.menu_id = m.id
        WHERE c.account_username = "admin"
        AND c.customer_no = "test"