@JFinal 你好,想跟你请教个问题:
问一下,jfinal的拦截器处理。现在我的项目,所有的请求都是ajax请求。现在我加了一个登陆页面
登陆的时候,会在session中设值,如果不登陆,直接访问,那拦截器拦截到你的请求,发现session里面没值,就会让页面跳转到登陆页面
那么问题来了,各种各样的ajax请求,有的dataType=text,有的dataType=json。现在我render("/login.jsp"),发现跳转不过去。
我自己F12看了,我发现response是返回了login.jsp的源码的,只不过页面没有去解析这种html返回值
拦截的ajax,回调函数都只写了success和error。客户端本来打算接收到的是json,现在服务器返回一个jsp的源码,他还是按照原来success里面的代码来执行,就没跳过去。我觉得应该是这样
那现在,我需要达到拦截各种类型的ajax请求,根据拦截器情况,让他们跳转到指定页面,该怎么做呢?
既然全部请求都是 ajax, 那么 jfinal 那端无论返回什么,都无法实现页面跳转,只有你 ajax 这头拿到数据以后,然后 js 实现页面的跳转。jfinal 后端返回的只是各种类型的数据而已,并不能直接控制你的页面进行跳转
try {
int[] ret = DbPro.use(module).batch(sql, JsonToObject2(param), 100);
map.put("success", true);
map.put("data", ret);
} catch (Exception e) {
map.put("success", false);
map.put("data", e.getMessage());
}
renderJson(JsonKit.toJson(map));
// 在拦截器中判断是否ajax请求
String ajax = ai.getController().getRequest().getHeader("X-Requested-With");
if("XMLHttpRequest".equals(ajax)){...}
lsioui 正解!