中断jquery ajax延迟链

时间:2016-11-24 03:48:28

标签: jquery ajax

我想打破jquery ajax延迟链,因此它不会继续执行后续操作。

我使用ajax导航和直接链接使我的网站工作。我正在使用nodejs / express,如果它不是ajax,我想发送本机重定向请求,或者如果请求是ajax,则使用window.location从jquery重定向。

我在快递中的逻辑工作得很好,可以发送重定向或错误。 我想要的是检查jquery中的请求状态,如果它看到重定向代码执行window.location。

现在我唯一的重定向是用户试图访问需要身份验证的页面,但是一旦我开始工作,我会让其他人填写。

当前发生的是在重定向开始时,目标div会填充错误消息。相反,我想打破延迟链并让window.location完成它的工作。

$.ajax({
    url: options.url,
    method: options.method,
    data: options.data
})
.always(function( data_jqXHR, textStatus, jqXHR_errorThrown ) {
    if (textStatus === 'success') {
        var jqXHR = jqXHR_errorThrown;
    } else {
        var jqXHR = data_jqXHR;
    }
    var data = jqXHR.responseJSON;

    switch (jqXHR.status) {
        case 401:
            window.location = "/login?error=session_expired";
            // I would like to stop execution here because I am redirecting
            break;
    }   
})
.done(function(data) {
    $("#" + options.target).html(data);
})
.fail(function (jqXHR, textStatus, error) {
    $("#" + options.target).html("Error loading page: " + error);
})
.always(function() {
    if (options.popup) {
        if (!($("#" + options.target + "_container").data('bs.modal') || {}).isShown) {
            $("#" + options.target + "_container").modal('show');
        }
    }
    if (options.hasOwnProperty('callback')) {
        options.callback();
    }
})
;

0 个答案:

没有答案