我正在尝试解决在做 ajaxy 事情时会话超时的问题。我正在使用 jQuery,并为出现 ajax 错误设置了一个函数。如果是401错误,我想基本暂停一切,让他们用弹窗登录,然后再恢复一切。我不完全确定,但是如果我对它们有更多了解,并且如果可以跟踪 ajax 请求并在稍后调用的某个事件上重试它,那么回调和闭包似乎可能有助于这项工作。
因此,如果他们像这样进行 ajax 调用
data = {
input: value
};
if ($j.statusXHR) {
$j.statusXHR.abort();
}
$j.statusXHR = $j.ajax({
url: url,
data: data,
type: "POST",
success: function (data) {
div.html(data);
},
error: function (request, textStatus, error) {
handleErrors(request, textStatus, error, $j.statusXHR, contentDiv, data);
}
});
如果他们没有登录,它会进入这个函数,它会显示一个登录按钮,它会打开一个登录页面的弹出窗口(不能使用 ajax 执行此操作,因为 openid 在另一个域上)。
function handleErrors(request, textStatus, error, xhr, elem, data) {
if (request.status === 401) {
// not logged in
url = "/login/ajaxExpired";
if (xhr) {
xhr.abort();
}
$j.ajax({
url: url,
success: function (data) {
elem.html(html);
}
});
}
}
openid部分的return_to页面应该根据返回的参数检测登录是否成功,关闭弹窗,发起原始ajax请求。这是我想知道的部分。可能吗?