2012-07-30 47 views
3

我的应用程序是使用jsp页面和jquery.mobile构建的。我使用Java函数来检查登录状态,并做了重定向时,那也不行,从一个Bean中是这样的:jsp response.redirect导致jquery.mobile出现问题

public String getMenu(HttpSession session, HttpServletResponse response, MenuType menuType, CurrentPage currentPage) 
{ 
    if (session.getAttribute("state") == LoginChecked.UNDEFINED)) 
    { 
     response.sendRedirect("../index.jsp"); 

     return null; 
    } 
    else 
    { 
     ... 

的问题是,重定向的index.jsp到由jquery.mobile作为Ajax处理重新加载页面的内容,而不是完整的重定向。

如何强制重新加载index.jsp页面的浏览器?

- 添加 -

中的HTML,这将与“相对”来解决属性这样的,所以我需要某种方法来我的Java的sendRedirect内使用此相对的:

<a href='../index.jsp' data-role='button' data-icon='plus' rel='external'> 

回答

1

我一直在寻找解决最近类似的问题,我自己当一个AJAX请求redirec(实际上重定向特德),并在这里找到了非常好的答案,我显然没有收藏书签。但是,为了自己成功实施它,我将根据该答案分享我采用的方法。

第一阶段是确定AJAX请求,以便它们可以按照与标准请求不同的方式进行处理。这可以通过检查X-Requested-With请求标头的值来完成;值为XMLHttpRequest表示AJAX请求。在标准请求的情况下,我们继续进行正常的重定向。在处理AJAX请求的情况下,而不是处理重定向,我所做的是设置一个响应头,以表示发生了重定向,并将其值设置为我要重定向到的URL。

然后,我用下面的jQuery代码来检查所有已完成的AJAX请求,并重定向适当的时候:

$(document).bind('ajaxComplete', function(event, xhr, options) { 
    var redirectHeader = xhr.getResponseHeader('YourHeader'); 
    if(xhr.readyState == 4 && redirectHeader != null) { 
     window.location.href = redirectHeader; 
    } 
}); 
0

从技术上讲,Ajax调用不支持重定向(调用始终在调用者端结束)。您可能需要确定在客户端的响应代码和做客户端的重定向像window.location的(HREF)

1

AJAX你将不得不这样做:

success: function(data, textStatus) { 
     if (data.redirect) { 
      // data.redirect contains the string URL to redirect to 
      window.location.href = data.redirect; 
     } 
} 

这将您重定向到网页由服务器内data指定

+0

这很好,如果你被重定向到的页面返回JSON数据,这可能不会是一个登录页面的情况。 – 2012-07-30 13:42:47

+0

的确,这对我来说不是一个解决方案,因为函数不是用JSON调用的。 – Frank 2012-07-30 13:45:28

+1

点是要有一些var,标志为服务器告诉ajax解析代码重定向。可能是一个特殊的标题,可能是一个唯一的字符串,如“NO_RESOPONSE_REDREICT_TO:http ... url ...”解析并转到url – tgkprog 2013-06-06 19:39:16

-1

我有这样的问题太多了,我已经找到了有效的解决方案,希望它可以帮助您:

这与AJAX有关,我的解决方案是: 将data-ajax="false"作为<form>的属性添加。就像我这样做:

<form id="reg-input" action="/Myservlet" method="post" data-ajax="false"> 
    <!-- .. --> 
</form> 

这将导致你的ajax不可用,照顾。

+0

这似乎与实际问题完全无关。我也很肯定,随机添加'data-ajax =“false”到你的'

'标签根本不会做任何事情。 – 2013-06-06 21:36:53

+0

@AnthonyGrist,实际上它确实有所作为,但这不是问题所需要的。 – yat0 2014-01-23 10:47:32

相关问题