无法在Ajax包装上的自定义成功回调内部重定向

Cannot redirect inside the custom success callback on an Ajax wrapper

本文关键字:成功 自定义 回调 内部 重定向 Ajax 包装      更新时间:2023-09-26

如果用户不再登录或在通过Ajax执行某些功能时没有权限,我将尝试将其重定向到登录页面。为了避免冗余,我根据在这里找到的代码为成功回调实现了一个包装器,该代码检查控制器是否返回not_loged_in以表示用户没有权限。如果用户没有权限,我会使用自定义的成功函数重定向用户问题是它没有将用户重定向到登录页面。相反,它只是在控制台上打印登录页面,实际的Ajax调用失败我应该在代码中更改什么?

这是Ajax包装器:

function wrapped_ajax(options) {
    var success = options.success;
    options.success = function(data, textStatus, jqXHR) {
        if(success) {
            if (data.not_logged_in) {
                window.location = 'login';
            } else {
                success(data, textStatus, jqXHR);
            }
        }
    };
    return $.ajax(options);
}

改为使用window.location.href='http://'+document.domain+'/login'(或类似的方法来创建正确的url)。