我想打破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();
}
})
;