登录后重复ajax请求

时间:2012-08-02 22:15:57

标签: jquery ajax callback xmlhttprequest

我正在尝试解决执行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执行此操作) 。

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请求。这是我想知道的部分。可能吗?

0 个答案:

没有答案