jQuery - 学习笔记 - 全局添加ajax重定向
jQuery - 学习笔记 - ajax重定向场景方案通过默认 complete 优先级低通过预过滤器重写 error 优先级高通过预过滤器重写 complete优先级高参考资料场景异步请求时,用户在别处登录,当前设备下线。需要重定向。方案通过默认 complete 优先级低默认配置中通过 complete 兜底。如果业务代码中也写了 complete 则会覆盖此方法。$.ajaxSetup({c
·
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()
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)