我正在使用$.post()
使用Ajax调用一个servlet,然后使用产生的HTML片段来替换用户当前页面中的div
元素。然而,如果会话超时,服务器会发送一个重定向指令,将用户发送到登录页面。在这种情况下,jQuery将div
元素替换为登录页面的内容,迫使用户的眼睛目睹了一个罕见的场景。
我如何用jQuery 1.2.6来管理Ajax调用的重定向指令?
使用低级别的$.ajax()
调用。
$.ajax({
url: "/yourservlet",
data: { },
complete: function(xmlHttp) {
// xmlHttp is a XMLHttpRquest object
alert(xmlHttp.status);
}
});
试试这个重定向。
if (xmlHttp.code != 200) {
top.location.href = '/some/other/page';
}
在Servlet中,你应该把
response.setStatus(response.SC_MOVED_PERMANENTLY);
来发送重定向所需的'301' xmlHttp状态...
在$.ajax函数中,你不应该使用.toString()
函数...,只要
if (xmlHttp.status == 301) { top.location.href = 'XXXX.jsp'。 }
问题是它不是很灵活,你不能决定你想重定向到哪里。
通过servlets重定向应该是最好的方法。但我还是找不到正确的方法。
此外,你可能希望将用户重定向到标题中给出的URL。因此,最后它将看起来像这样。
$.ajax({
//.... other definition
complete:function(xmlHttp){
if(xmlHttp.status.toString()[0]=='3'){
top.location.href = xmlHttp.getResponseHeader('Location');
}
});
UPD: Opps.有相同的任务,但它不工作。在做这个事情。当我找到解决方案时,我会告诉你。