Jquery 登录后重复ajax请求

Jquery 登录后重复ajax请求,jquery,ajax,callback,xmlhttprequest,Jquery,Ajax,Callback,Xmlhttprequest,我试图解决在做ajaxy事情时会话超时的问题。我正在使用jQuery,并为出现ajax错误时设置了一个函数。如果是401错误,我想基本上暂停一切,让他们用弹出窗口登录,然后恢复一切。我不完全确定,但是回调和闭包似乎有助于这项工作,如果我对它们有更多的了解,如果可以跟踪ajax请求并在稍后调用的某个事件上重试的话 所以如果他们这样做ajax调用 data = { input: value }; if ($j.statusXHR) { $j.statusXHR.abort(); }

我试图解决在做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);
    }
});
如果他们没有登录,它会进入这个函数,它会显示一个登录按钮,打开一个登录页面的弹出窗口(因为openid在另一个域上,所以不能使用ajax)


openid部分的return_to页面应根据返回的参数检测登录是否成功,并关闭弹出窗口并启动原始ajax请求。这就是我想知道的部分。可能吗

从我对该领域的了解来看,似乎您想要的是让每个ajax请求成为一个独立的函数,并拥有一个顶级数组,其中包含要处理的每个事件,带有一个标志(记住数组元素可以是一个对象),当您开始处理函数时,插入到数组中,完成后,在数组中检查它。在数组中包含一个对启动函数的引用,因此如果您必须登录并重试,您可以再次调用该函数。我从未尝试过这个,所以这些只是一些提示。让所有东西都使用一个通用的手柄错误,因为您建议可能重复
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);
            }
        });
    }
}