gpt4 book ai didi

jquery - Ajax Jquery 调用重定向

转载 作者:行者123 更新时间:2023-12-03 21:41:47 24 4
gpt4 key购买 nike

我是 ajax 新手,我知道有人已经遇到过这个问题。我有一个基于 Spring MVC 构建的遗留应用程序,它有一个拦截器(过滤器),可以将用户重定向到登录每当没有 session 时页面。

public class SessionCheckerInterceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();

// check if userInfo exist in session
User user = (User) session.getAttribute("user");
if (user == null) {
response.sendRedirect("login.htm");
return false;
}
return true;
}
}

对于非 xmlhttp 请求,这工作正常..但是当我尝试在我的应用程序中使用 ajax 时,一切都变得很奇怪,它无法正确重定向到登录页面。作为检查的值

xhr.status = 200 textStatus = parseError errorThrown =“无效的 JSON -我的 HTML 登录页面的标记-

$(document).ready(function(){
jQuery.ajax({
type: "GET",
url: "populateData.htm",
dataType:"json",
data:"userId=SampleUser",
success:function(response){
//code here
},
error: function(xhr, textStatus, errorThrown) {
alert('Error! Status = ' + xhr.status);
}

});
});

我检查了我的 Firebug ,有一个 302 HTTP 响应,但我不确定如何捕获响应并将用户重定向到登录页。这里有什么想法吗?谢谢。

最佳答案

JQuery 正在寻找 json 类型的结果,但由于重定向是自动处理的,它将接收您的 login.htm生成的 html 源页。

一个想法是让浏览器知道它应该通过添加 redirect 进行重定向。变量到结果对象并在 JQuery 中检查它:

$(document).ready(function(){ 
jQuery.ajax({
type: "GET",
url: "populateData.htm",
dataType:"json",
data:"userId=SampleUser",
success:function(response){
if (response.redirect) {
window.location.href = response.redirect;
}
else {
// Process the expected results...
}
},
error: function(xhr, textStatus, errorThrown) {
alert('Error! Status = ' + xhr.status);
}

});
});

您还可以在响应中添加 header 变量,并让您的浏览器决定重定向到何处。在 Java 中,不要重定向,而是执行 response.setHeader("REQUIRES_AUTH", "1")在 JQuery 中你会成功(!):

//....
success:function(response){
if (response.getResponseHeader('REQUIRES_AUTH') === '1'){
window.location.href = 'login.htm';
}
else {
// Process the expected results...
}
}
//....

希望有帮助。

我的回答深受 this thread 的启发。如果您仍然遇到问题,这不会留下任何问题。

关于jquery - Ajax Jquery 调用重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2927044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com