标准的HttpRequest做出一个同步的调用,必须等待服务器端返回响应,然后对页面进行加载(一般会呈递一个新的页面)。XMLHttpRequest可以发送异步请求,也可发送同步请求,但不会进行页面重新加载。当XMLHttpRequest进行请求时,目标页面会呈递特定的MIME类型数据(XML,JSON等)。XMLHttpRequest使用标准的javascript API对服务器端返回的响应进行解析,并且更新目标页面。
前几天,编写程序实现--当Session过期时,用户再次向服务器发送请求时,跳转到登陆页面--功能时,使用了如下代码:
response.sendRedirect("myprojectname/login");
上代码并没有得到预期效果,后来才明白,因为使用的是Ajax请求,XMLHttpRequest与标准HttpRequest不同,response也无法如HttpRequest般实现重定向功能。
只能想其他的解决办法:
服务器端片段代码:
if(request.getSession() == null || request.getSesion().getAttribute("user") == null) // Session过期
map.put("operation_invalid", "invalid"); // 在Spring中可以使用Jackson,将返回的对象组装成json对象
else
{
......
}
客户端片段代码:
if(data.operation_invalid) // 如果Session过期,这里解析json可能会用到jquery的each方法;
window.location = "myprojectname/login"; //实现跳转
Good Bye, Guys.....