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重定向的主要内容,如果未能解决你的问题,请参考以下文章

jQuery学习笔记

jQuery学习笔记

jquery学习笔记ajax

锋利的JQuery学习笔记之JQuery

锋利的jQuery第2版学习笔记67章

JQuery的一些注意事项- AJAX 学习笔记