Jquery mobile 强制数据ajax=";假;在重定向或特定页面加载时

Jquery mobile 强制数据ajax=";假;在重定向或特定页面加载时,jquery-mobile,Jquery Mobile,假设我有一个指向以下页面的链接: <a class="ui-btn" data-transition="slide" href="/Stuff/Properties/Q6158">Properties for Q6158"</a> 通常情况下,我希望该页面滑入视图,因此数据ajax将默认为“true”,并且工作正常。但是,如果在服务器端,发生了一些事情,导致我想要重定向到另一个页面,而不是使用ajax加载它,该怎么办?换句话说,用户的会话已过期,我希望重新加载整个登

假设我有一个指向以下页面的链接:

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

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

我意识到,当请求到达服务器并发现会话已经消失时,更改请求已经太晚了,jQM已经发出了请求。我想我可以自己处理链接的点击并手动处理自定义的“重定向”响应,但这似乎太麻烦了,因为基本上站点上的每个链接都会受到影响


所以我没有主意了。我真的希望整个登录页面在这一点上被完全重新加载。任何想法都会有帮助!谢谢

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

在jQuery Mobile中,有一个名为“pageloadfailed”的事件,当页面加载失败时会触发该事件。在这里,您可以直接重定向到登录页面

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

希望能奏效。

我最后介绍了第三页。当会话过期时,我返回我称之为“加载”的页面。该页面所做的只是显示“正在加载,请稍候…”,并立即将location.url设置为pageinit中的登录页面,从而使登录完全重新加载。就我的特殊情况而言,到目前为止似乎效果不错。但是谢谢你的其他建议

您使用的是什么版本的JQM?您使用的是多页还是单页模式?1.4.3多页(?)。i、 例如,每个页面都是通过AJAX加载的。这意味着单页面模型,每个页面都在一个单独的文件中。您可以在页面更改之前检查会话是否已过期
PageContainerBeforChange
,然后您可以将用户重定向到带有或不带ajax的登录页面。虽然我认为这是一个很好的建议,并给了我一些思考,但我不相信我想对我的案例中的每一个404都这样做。@JamesR。您可以从服务器ajax调用返回HTTP 3xx代码,因此如果会话已过期,请将用户重定向到登录页面。我不知道jQM将如何处理此问题,但它应该重定向用户。