我认为问题标题并不是我想要的,但总结起来有点复杂。我将尝试解释:
我正在开发一个需要用户登录的界面,登录令牌在设定的一段时间后过期,并通过ajax执行操作。最终结果是用户可以因为他们的令牌过期而被注销,然后他们尝试执行ajax请求,因为他们没有登录而无法工作。
这就是我试图打击它的方式:
$(document).ajaxError(function(e, jqXHR, options) {
if (jqXHR.status == 403) {
doLogin(function() {
$.ajax(options);
});
}
});
假设doLogin记录用户,然后调用回调。第二次调用$ .ajax重试ajax请求(现在用户已登录),它有望成功。
现在,这是一个棘手的部分 - 如果使用jQuery提供的回调机制,但不使用延迟,它可以工作。所以这有效:
$.get('/something', function() {
// got it!
});
这有效:
$.ajax('/something', {
success: function() {
// got it!
}
});
但这不是:
$.get('/something').done(function() {
// got it!
});
我有什么想法可以做到这一点?