jQuery - 学习笔记 - 全局添加ajax重定向
Posted 笑虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery - 学习笔记 - 全局添加ajax重定向相关的知识,希望对你有一定的参考价值。
jQuery - 学习笔记 - 全局添加ajax重定向
场景
异步请求时,用户在别处登录,当前设备下线。需要重定向。
方案
通过默认 complete 优先级低
默认配置中通过 complete
兜底。如果业务代码中也写了 complete
则会覆盖此方法。
如果整个项目能自己掌控,推荐这个。
$.ajaxSetup(
complete: function (event, request, settings)
if(event.status === 401)
top.alert(event.responseText);
top.location.href = '/login';
);
通过预过滤器重写 error 优先级高
半途接手的项目,不知道在原来怎么写的。
预处理中封装默认原 error
方法。虽然不怕被覆盖了,但是重复概率太高,因为写error
回调还是很常见的。有点浪费。。。
$.ajaxPrefilter(function (options, originalOptions, jqXHR)
var origError = options.error || console.error;
options.error = (function(origError)
return function(jqXHR, textStatus, errorThrown)
if(jqXHR.status === 401)
top.alert(jqXHR.responseText);
top.location.href = '/login';
else
$.isFunction(origError) && origError(jqXHR, textStatus, errorThrown);
)(origError);
);
通过预过滤器重写 complete 优先级高
预处理中封装默认原 complete
兜底。相对error
来说complete
覆盖的几率就小很多。
$.ajaxPrefilter(function (options, originalOptions, jqXHR)
let origComplete = options.complete;
options.complete = function(event, request, settings)
if(event.status === 401)
top.alert(event.responseText);
top.location.href = '/login';
else
$.isFunction(origComplete) && origComplete(event, request, settings);
);
参考资料
jQuery.ajax()
jQuery.ajaxSetup()
jQuery.ajaxPrefilter()
.ajaxComplete()
以上是关于jQuery - 学习笔记 - 全局添加ajax重定向的主要内容,如果未能解决你的问题,请参考以下文章