我在这里读了几篇文章,激发了我的解决方案,但想知道我是否采用了正确的方式。
我所做的是创建一个捕获jQuery ajax错误的事件:
$('body').ajaxError(function(xmlHttpRequest, ajaxOptions, error) {
if (!locked) CheckUserAuthentication();
});
然后,CheckUserAuthentication()会通过另一个对Web服务的ajax调用来尝试检查身份验证是否仍处于活动状态。如果它返回一个需要重新登录的值,我会提示一个显示登录表单的模式框。如果ajax调用失败,则可以安全地假设互联网连接已丢失,因此我提示另一个显示消息的模式框和一个以间隔再次检查连接的js循环。
我首先关注的是上面的事件代码实际上重复触发自身,如果它达到第二个ajax错误,使其成为重复循环。所以我创建了一个变量来设置一个布尔值是否锁定事件以防止这种情况。
我的问题:
1)我做得对吗?
2)如果是,那么我可以处理一个ajax异常,这样我就不需要锁定重新触发的.ajaxError事件吗?
3)我正在做的其他任何想法都非常有效吗?
我感谢所有的帮助!
答案 0 :(得分:0)
我已经实现了类似的东西。
我为beforeSend设置jQuery Ajax选项以发出ajax请求以查看用户是否仍然登录。如果没有登录,我使用HTTP基本身份验证。
HTTP Basic Auth是丑陋而蹩脚的,但是当你试图让用户登录时,在所有浏览器中都有很好的模态属性来阻止原始的Ajax事件在其轨道中死亡。
在HTTP Basic Auth之后,原始的Ajax事件将恢复。
查看javascript源文件,该文件应提供一些见解:http://bit.ly/g5jUes