2014-11-24 40 views
0

比方说,我有一个链接到一个网页,如:力数据,阿贾克斯重定向=“假”,或在某个页面加载

<a class="ui-btn" data-transition="slide" href="/Stuff/Properties/Q6158">Properties for Q6158"</a> 

通常情况下,我希望这个页面滑动进入视图,因此data-ajax将默认为“true”,这可以正常工作。但是如果在服务器端,发生了什么事情导致我想要重定向到不同的页面,而不是使用ajax加载它?换句话说,用户的会话已过期,我想重新加载整个登录页面,而不是将其滑入视图而不是请求的页面。希望这是有道理的。

我意识到,当请求到达服务器时,它发现会话已经消失,要改变请求已经太晚了,它已经由jQM完成了。我想我可以自己处理链接的点击并手动处理自定义的“重定向”响应,但这看起来过于繁琐,因为基本上每个链接都受此影响。

所以我没有想法。我真的很想整个登录页面在这个时候完全重新加载。任何想法都会有所帮助!谢谢!

+0

您使用的是什么版本的JQM?你是用多页还是单页模型? – Omar 2014-11-24 16:36:55

+0

1.4.3多页(?)。即每个页面通过AJAX加载。 – 2014-11-24 21:33:16

+1

这意味着单页模型,每个页面在一个单独的文件中。您可以检查会话是否在页面更改'pagecontainerbeforechange'之前过期,然后您可以将用户重定向到带有或不带有ajax的登录页面。 – Omar 2014-11-24 21:44:24

回答

1

在服务器端,您可以控制会话并在ajax调用中,如果会话已过期,则返回404错误。

在jQuery Mobile中,存在一个名为“pageloadfailed”的事件,当页面加载失败时会触发该事件。在那里你冷重定向到你的登录页面。

$(document).on("pageloadfailed", function(event, data) { 
    event.preventDefault(); 
    //redirect to your login page 
}); 

希望工程。

+0

虽然我认为这是一个很好的建议,并给了我一些想法,但我不认为我想为我的情况每404做这件事。 – 2014-11-24 21:24:30

+0

@JamesR。您可以从服务器ajax调用返回HTTP 3xx代码[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection],因此如果会话已过期,请将用户重定向到登录页面。真的不知道jQM如何处理这个问题,但它应该重定向用户。 – ojovirtual 2014-11-25 08:32:57

0

我最后介绍了第三页。当会话过期时,我返回这个页面,我称之为“加载”。所有页面都会显示“Loading,please wait ...”,并立即将page.url设置为pageinit中的登录页面,导致登录被完全重新加载。对于我的特殊情况,目前看起来工作得很好。但感谢您的其他建议!